{"version":3,"file":"dataweb.vendor.js","mappings":"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","sources":["webpack://app/./node_modules/resumablejs/resumable.js","webpack://app/./node_modules/vue/dist/vue.common.prod.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/compat get default export","webpack://app/webpack/runtime/define property getters","webpack://app/webpack/runtime/global","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/make namespace object","webpack://app/./node_modules/vuex/dist/vuex.esm.js","webpack://app/./node_modules/vue-router/dist/vue-router.esm.js","webpack://app/./node_modules/axios/lib/helpers/bind.js","webpack://app/./node_modules/axios/lib/utils.js","webpack://app/./node_modules/axios/lib/core/AxiosError.js","webpack://app/./node_modules/axios/lib/helpers/toFormData.js","webpack://app/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://app/./node_modules/axios/lib/helpers/buildURL.js","webpack://app/./node_modules/axios/lib/core/InterceptorManager.js","webpack://app/./node_modules/axios/lib/defaults/transitional.js","webpack://app/./node_modules/axios/lib/platform/browser/index.js","webpack://app/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://app/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://app/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://app/./node_modules/axios/lib/platform/common/utils.js","webpack://app/./node_modules/axios/lib/platform/index.js","webpack://app/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://app/./node_modules/axios/lib/defaults/index.js","webpack://app/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://app/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://app/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://app/./node_modules/axios/lib/core/transformData.js","webpack://app/./node_modules/axios/lib/cancel/isCancel.js","webpack://app/./node_modules/axios/lib/cancel/CanceledError.js","webpack://app/./node_modules/axios/lib/core/settle.js","webpack://app/./node_modules/axios/lib/helpers/speedometer.js","webpack://app/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://app/./node_modules/axios/lib/helpers/throttle.js","webpack://app/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://app/./node_modules/axios/lib/helpers/cookies.js","webpack://app/./node_modules/axios/lib/core/buildFullPath.js","webpack://app/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://app/./node_modules/axios/lib/helpers/combineURLs.js","webpack://app/./node_modules/axios/lib/core/mergeConfig.js","webpack://app/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://app/./node_modules/axios/lib/adapters/xhr.js","webpack://app/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://app/./node_modules/axios/lib/helpers/composeSignals.js","webpack://app/./node_modules/axios/lib/helpers/trackStream.js","webpack://app/./node_modules/axios/lib/adapters/fetch.js","webpack://app/./node_modules/axios/lib/adapters/adapters.js","webpack://app/./node_modules/axios/lib/helpers/null.js","webpack://app/./node_modules/axios/lib/core/dispatchRequest.js","webpack://app/./node_modules/axios/lib/env/data.js","webpack://app/./node_modules/axios/lib/helpers/validator.js","webpack://app/./node_modules/axios/lib/core/Axios.js","webpack://app/./node_modules/axios/lib/cancel/CancelToken.js","webpack://app/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://app/./node_modules/axios/lib/axios.js","webpack://app/./node_modules/axios/lib/helpers/spread.js","webpack://app/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://app/./node_modules/@kurkle/color/dist/color.esm.js","webpack://app/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://app/./node_modules/chart.js/dist/chart.js","webpack://app/./node_modules/chart.js/auto/auto.js","webpack://app/./Scripts/DataWebVendor.ts"],"sourcesContent":["/*\n* MIT Licensed\n* http://www.23developer.com/opensource\n* http://github.com/23/resumable.js\n* Steffen Tiedemann Christensen, steffen@23company.com\n*/\n\n(function(){\n\"use strict\";\n\n var Resumable = function(opts){\n if ( !(this instanceof Resumable) ) {\n return new Resumable(opts);\n }\n this.version = 1.0;\n // SUPPORTED BY BROWSER?\n // Check if these features are support by the browser:\n // - File object type\n // - Blob object type\n // - FileList object type\n // - slicing files\n this.support = (\n (typeof(File)!=='undefined')\n &&\n (typeof(Blob)!=='undefined')\n &&\n (typeof(FileList)!=='undefined')\n &&\n (!!Blob.prototype.webkitSlice||!!Blob.prototype.mozSlice||!!Blob.prototype.slice||false)\n );\n if(!this.support) return(false);\n\n\n // PROPERTIES\n var $ = this;\n $.files = [];\n $.defaults = {\n chunkSize:1*1024*1024,\n forceChunkSize:false,\n simultaneousUploads:3,\n fileParameterName:'file',\n chunkNumberParameterName: 'resumableChunkNumber',\n chunkSizeParameterName: 'resumableChunkSize',\n currentChunkSizeParameterName: 'resumableCurrentChunkSize',\n totalSizeParameterName: 'resumableTotalSize',\n typeParameterName: 'resumableType',\n identifierParameterName: 'resumableIdentifier',\n fileNameParameterName: 'resumableFilename',\n relativePathParameterName: 'resumableRelativePath',\n totalChunksParameterName: 'resumableTotalChunks',\n throttleProgressCallbacks: 0.5,\n query:{},\n headers:{},\n preprocess:null,\n method:'multipart',\n uploadMethod: 'POST',\n testMethod: 'GET',\n prioritizeFirstAndLastChunk:false,\n target:'/',\n testTarget: null,\n parameterNamespace:'',\n testChunks:true,\n generateUniqueIdentifier:null,\n getTarget:null,\n maxChunkRetries:100,\n chunkRetryInterval:undefined,\n permanentErrors:[400, 404, 415, 500, 501],\n maxFiles:undefined,\n withCredentials:false,\n xhrTimeout:0,\n clearInput:true,\n chunkFormat:'blob',\n setChunkTypeFromFile:false,\n maxFilesErrorCallback:function (files, errorCount) {\n var maxFiles = $.getOpt('maxFiles');\n alert('Please upload no more than ' + maxFiles + ' file' + (maxFiles === 1 ? '' : 's') + ' at a time.');\n },\n minFileSize:1,\n minFileSizeErrorCallback:function(file, errorCount) {\n alert(file.fileName||file.name +' is too small, please upload files larger than ' + $h.formatSize($.getOpt('minFileSize')) + '.');\n },\n maxFileSize:undefined,\n maxFileSizeErrorCallback:function(file, errorCount) {\n alert(file.fileName||file.name +' is too large, please upload files less than ' + $h.formatSize($.getOpt('maxFileSize')) + '.');\n },\n fileType: [],\n fileTypeErrorCallback: function(file, errorCount) {\n alert(file.fileName||file.name +' has type not allowed, please upload files of type ' + $.getOpt('fileType') + '.');\n }\n };\n $.opts = opts||{};\n $.getOpt = function(o) {\n var $opt = this;\n // Get multiple option if passed an array\n if(o instanceof Array) {\n var options = {};\n $h.each(o, function(option){\n options[option] = $opt.getOpt(option);\n });\n return options;\n }\n // Otherwise, just return a simple option\n if ($opt instanceof ResumableChunk) {\n if (typeof $opt.opts[o] !== 'undefined') { return $opt.opts[o]; }\n else { $opt = $opt.fileObj; }\n }\n if ($opt instanceof ResumableFile) {\n if (typeof $opt.opts[o] !== 'undefined') { return $opt.opts[o]; }\n else { $opt = $opt.resumableObj; }\n }\n if ($opt instanceof Resumable) {\n if (typeof $opt.opts[o] !== 'undefined') { return $opt.opts[o]; }\n else { return $opt.defaults[o]; }\n }\n };\n\n // EVENTS\n // catchAll(event, ...)\n // fileSuccess(file), fileProgress(file), fileAdded(file, event), filesAdded(files, filesSkipped), fileRetry(file),\n // fileError(file, message), complete(), progress(), error(message, file), pause()\n $.events = [];\n $.on = function(event,callback){\n $.events.push(event.toLowerCase(), callback);\n };\n $.fire = function(){\n // `arguments` is an object, not array, in FF, so:\n var args = [];\n for (var i=0; i 0){\n var fileTypeFound = false;\n for(var index in o.fileType){\n var extension = '.' + o.fileType[index];\n\t\t\tif(fileName.toLowerCase().indexOf(extension.toLowerCase(), fileName.length - extension.length) !== -1){\n fileTypeFound = true;\n break;\n }\n }\n if (!fileTypeFound) {\n o.fileTypeErrorCallback(file, errorCount++);\n return false;\n }\n }\n\n if (typeof(o.minFileSize)!=='undefined' && file.sizeo.maxFileSize) {\n o.maxFileSizeErrorCallback(file, errorCount++);\n return false;\n }\n\n function addFile(uniqueIdentifier){\n if (!$.getFromUniqueIdentifier(uniqueIdentifier)) {(function(){\n file.uniqueIdentifier = uniqueIdentifier;\n var f = new ResumableFile($, file, uniqueIdentifier);\n $.files.push(f);\n files.push(f);\n f.container = (typeof event != 'undefined' ? event.srcElement : null);\n window.setTimeout(function(){\n $.fire('fileAdded', f, event)\n },0);\n })()} else {\n filesSkipped.push(file);\n };\n decreaseReamining();\n }\n // directories have size == 0\n var uniqueIdentifier = $h.generateUniqueIdentifier(file, event);\n if(uniqueIdentifier && typeof uniqueIdentifier.then === 'function'){\n // Promise or Promise-like object provided as unique identifier\n uniqueIdentifier\n .then(\n function(uniqueIdentifier){\n // unique identifier generation succeeded\n addFile(uniqueIdentifier);\n },\n function(){\n // unique identifier generation failed\n // skip further processing, only decrease file count\n decreaseReamining();\n }\n );\n }else{\n // non-Promise provided as unique identifier, process synchronously\n addFile(uniqueIdentifier);\n }\n });\n };\n\n // INTERNAL OBJECT TYPES\n function ResumableFile(resumableObj, file, uniqueIdentifier){\n var $ = this;\n $.opts = {};\n $.getOpt = resumableObj.getOpt;\n $._prevProgress = 0;\n $.resumableObj = resumableObj;\n $.file = file;\n $.fileName = file.fileName||file.name; // Some confusion in different versions of Firefox\n $.size = file.size;\n $.relativePath = file.relativePath || file.webkitRelativePath || $.fileName;\n $.uniqueIdentifier = uniqueIdentifier;\n $._pause = false;\n $.container = '';\n var _error = uniqueIdentifier !== undefined;\n\n // Callback when something happens within the chunk\n var chunkEvent = function(event, message){\n // event can be 'progress', 'success', 'error' or 'retry'\n switch(event){\n case 'progress':\n $.resumableObj.fire('fileProgress', $, message);\n break;\n case 'error':\n $.abort();\n _error = true;\n $.chunks = [];\n $.resumableObj.fire('fileError', $, message);\n break;\n case 'success':\n if(_error) return;\n $.resumableObj.fire('fileProgress', $); // it's at least progress\n if($.isComplete()) {\n $.resumableObj.fire('fileSuccess', $, message);\n }\n break;\n case 'retry':\n $.resumableObj.fire('fileRetry', $);\n break;\n }\n };\n\n // Main code to set up a file object with chunks,\n // packaged to be able to handle retries if needed.\n $.chunks = [];\n $.abort = function(){\n // Stop current uploads\n var abortCount = 0;\n $h.each($.chunks, function(c){\n if(c.status()=='uploading') {\n c.abort();\n abortCount++;\n }\n });\n if(abortCount>0) $.resumableObj.fire('fileProgress', $);\n };\n $.cancel = function(){\n // Reset this file to be void\n var _chunks = $.chunks;\n $.chunks = [];\n // Stop current uploads\n $h.each(_chunks, function(c){\n if(c.status()=='uploading') {\n c.abort();\n $.resumableObj.uploadNextChunk();\n }\n });\n $.resumableObj.removeFile($);\n $.resumableObj.fire('fileProgress', $);\n };\n $.retry = function(){\n $.bootstrap();\n var firedRetry = false;\n $.resumableObj.on('chunkingComplete', function(){\n if(!firedRetry) $.resumableObj.upload();\n firedRetry = true;\n });\n };\n $.bootstrap = function(){\n $.abort();\n _error = false;\n // Rebuild stack of chunks from file\n $.chunks = [];\n $._prevProgress = 0;\n var round = $.getOpt('forceChunkSize') ? Math.ceil : Math.floor;\n var maxOffset = Math.max(round($.file.size/$.getOpt('chunkSize')),1);\n for (var offset=0; offset0.99999 ? 1 : ret));\n ret = Math.max($._prevProgress, ret); // We don't want to lose percentages when an upload is paused\n $._prevProgress = ret;\n return(ret);\n };\n $.isUploading = function(){\n var uploading = false;\n $h.each($.chunks, function(chunk){\n if(chunk.status()=='uploading') {\n uploading = true;\n return(false);\n }\n });\n return(uploading);\n };\n $.isComplete = function(){\n var outstanding = false;\n $h.each($.chunks, function(chunk){\n var status = chunk.status();\n if(status=='pending' || status=='uploading' || chunk.preprocessState === 1) {\n outstanding = true;\n return(false);\n }\n });\n return(!outstanding);\n };\n $.pause = function(pause){\n if(typeof(pause)==='undefined'){\n $._pause = ($._pause ? false : true);\n }else{\n $._pause = pause;\n }\n };\n $.isPaused = function() {\n return $._pause;\n };\n\n\n // Bootstrap and return\n $.resumableObj.fire('chunkingStart', $);\n $.bootstrap();\n return(this);\n }\n\n\n function ResumableChunk(resumableObj, fileObj, offset, callback){\n var $ = this;\n $.opts = {};\n $.getOpt = resumableObj.getOpt;\n $.resumableObj = resumableObj;\n $.fileObj = fileObj;\n $.fileObjSize = fileObj.size;\n $.fileObjType = fileObj.file.type;\n $.offset = offset;\n $.callback = callback;\n $.lastProgressCallback = (new Date);\n $.tested = false;\n $.retries = 0;\n $.pendingRetry = false;\n $.preprocessState = 0; // 0 = unprocessed, 1 = processing, 2 = finished\n\n // Computed properties\n var chunkSize = $.getOpt('chunkSize');\n $.loaded = 0;\n $.startByte = $.offset*chunkSize;\n $.endByte = Math.min($.fileObjSize, ($.offset+1)*chunkSize);\n if ($.fileObjSize-$.endByte < chunkSize && !$.getOpt('forceChunkSize')) {\n // The last chunk will be bigger than the chunk size, but less than 2*chunkSize\n $.endByte = $.fileObjSize;\n }\n $.xhr = null;\n\n // test() makes a GET request without any data to see if the chunk has already been uploaded in a previous session\n $.test = function(){\n // Set up request and listen for event\n $.xhr = new XMLHttpRequest();\n\n var testHandler = function(e){\n $.tested = true;\n var status = $.status();\n if(status=='success') {\n $.callback(status, $.message());\n $.resumableObj.uploadNextChunk();\n } else {\n $.send();\n }\n };\n $.xhr.addEventListener('load', testHandler, false);\n $.xhr.addEventListener('error', testHandler, false);\n $.xhr.addEventListener('timeout', testHandler, false);\n\n // Add data from the query options\n var params = [];\n var parameterNamespace = $.getOpt('parameterNamespace');\n var customQuery = $.getOpt('query');\n if(typeof customQuery == 'function') customQuery = customQuery($.fileObj, $);\n $h.each(customQuery, function(k,v){\n params.push([encodeURIComponent(parameterNamespace+k), encodeURIComponent(v)].join('='));\n });\n // Add extra data to identify chunk\n params = params.concat(\n [\n // define key/value pairs for additional parameters\n ['chunkNumberParameterName', $.offset + 1],\n ['chunkSizeParameterName', $.getOpt('chunkSize')],\n ['currentChunkSizeParameterName', $.endByte - $.startByte],\n ['totalSizeParameterName', $.fileObjSize],\n ['typeParameterName', $.fileObjType],\n ['identifierParameterName', $.fileObj.uniqueIdentifier],\n ['fileNameParameterName', $.fileObj.fileName],\n ['relativePathParameterName', $.fileObj.relativePath],\n ['totalChunksParameterName', $.fileObj.chunks.length]\n ].filter(function(pair){\n // include items that resolve to truthy values\n // i.e. exclude false, null, undefined and empty strings\n return $.getOpt(pair[0]);\n })\n .map(function(pair){\n // map each key/value pair to its final form\n return [\n parameterNamespace + $.getOpt(pair[0]),\n encodeURIComponent(pair[1])\n ].join('=');\n })\n );\n // Append the relevant chunk and send it\n $.xhr.open($.getOpt('testMethod'), $h.getTarget('test', params));\n $.xhr.timeout = $.getOpt('xhrTimeout');\n $.xhr.withCredentials = $.getOpt('withCredentials');\n // Add data from header options\n var customHeaders = $.getOpt('headers');\n if(typeof customHeaders === 'function') {\n customHeaders = customHeaders($.fileObj, $);\n }\n $h.each(customHeaders, function(k,v) {\n $.xhr.setRequestHeader(k, v);\n });\n $.xhr.send(null);\n };\n\n $.preprocessFinished = function(){\n $.preprocessState = 2;\n $.send();\n };\n\n // send() uploads the actual data in a POST call\n $.send = function(){\n var preprocess = $.getOpt('preprocess');\n if(typeof preprocess === 'function') {\n switch($.preprocessState) {\n case 0: $.preprocessState = 1; preprocess($); return;\n case 1: return;\n case 2: break;\n }\n }\n if($.getOpt('testChunks') && !$.tested) {\n $.test();\n return;\n }\n\n // Set up request and listen for event\n $.xhr = new XMLHttpRequest();\n\n // Progress\n $.xhr.upload.addEventListener('progress', function(e){\n if( (new Date) - $.lastProgressCallback > $.getOpt('throttleProgressCallbacks') * 1000 ) {\n $.callback('progress');\n $.lastProgressCallback = (new Date);\n }\n $.loaded=e.loaded||0;\n }, false);\n $.loaded = 0;\n $.pendingRetry = false;\n $.callback('progress');\n\n // Done (either done, failed or retry)\n var doneHandler = function(e){\n var status = $.status();\n if(status=='success'||status=='error') {\n $.callback(status, $.message());\n $.resumableObj.uploadNextChunk();\n } else {\n $.callback('retry', $.message());\n $.abort();\n $.retries++;\n var retryInterval = $.getOpt('chunkRetryInterval');\n if(retryInterval !== undefined) {\n $.pendingRetry = true;\n setTimeout($.send, retryInterval);\n } else {\n $.send();\n }\n }\n };\n $.xhr.addEventListener('load', doneHandler, false);\n $.xhr.addEventListener('error', doneHandler, false);\n $.xhr.addEventListener('timeout', doneHandler, false);\n\n // Set up the basic query data from Resumable\n var query = [\n ['chunkNumberParameterName', $.offset + 1],\n ['chunkSizeParameterName', $.getOpt('chunkSize')],\n ['currentChunkSizeParameterName', $.endByte - $.startByte],\n ['totalSizeParameterName', $.fileObjSize],\n ['typeParameterName', $.fileObjType],\n ['identifierParameterName', $.fileObj.uniqueIdentifier],\n ['fileNameParameterName', $.fileObj.fileName],\n ['relativePathParameterName', $.fileObj.relativePath],\n ['totalChunksParameterName', $.fileObj.chunks.length],\n ].filter(function(pair){\n // include items that resolve to truthy values\n // i.e. exclude false, null, undefined and empty strings\n return $.getOpt(pair[0]);\n })\n .reduce(function(query, pair){\n // assign query key/value\n query[$.getOpt(pair[0])] = pair[1];\n return query;\n }, {});\n // Mix in custom data\n var customQuery = $.getOpt('query');\n if(typeof customQuery == 'function') customQuery = customQuery($.fileObj, $);\n $h.each(customQuery, function(k,v){\n query[k] = v;\n });\n\n var func = ($.fileObj.file.slice ? 'slice' : ($.fileObj.file.mozSlice ? 'mozSlice' : ($.fileObj.file.webkitSlice ? 'webkitSlice' : 'slice')));\n var bytes = $.fileObj.file[func]($.startByte, $.endByte, $.getOpt('setChunkTypeFromFile') ? $.fileObj.file.type : \"\");\n var data = null;\n var params = [];\n\n var parameterNamespace = $.getOpt('parameterNamespace');\n if ($.getOpt('method') === 'octet') {\n // Add data from the query options\n data = bytes;\n $h.each(query, function (k, v) {\n params.push([encodeURIComponent(parameterNamespace + k), encodeURIComponent(v)].join('='));\n });\n } else {\n // Add data from the query options\n data = new FormData();\n $h.each(query, function (k, v) {\n data.append(parameterNamespace + k, v);\n params.push([encodeURIComponent(parameterNamespace + k), encodeURIComponent(v)].join('='));\n });\n if ($.getOpt('chunkFormat') == 'blob') {\n data.append(parameterNamespace + $.getOpt('fileParameterName'), bytes, $.fileObj.fileName);\n }\n else if ($.getOpt('chunkFormat') == 'base64') {\n var fr = new FileReader();\n fr.onload = function (e) {\n data.append(parameterNamespace + $.getOpt('fileParameterName'), fr.result);\n $.xhr.send(data);\n }\n fr.readAsDataURL(bytes);\n }\n }\n\n var target = $h.getTarget('upload', params);\n var method = $.getOpt('uploadMethod');\n\n $.xhr.open(method, target);\n if ($.getOpt('method') === 'octet') {\n $.xhr.setRequestHeader('Content-Type', 'application/octet-stream');\n }\n $.xhr.timeout = $.getOpt('xhrTimeout');\n $.xhr.withCredentials = $.getOpt('withCredentials');\n // Add data from header options\n var customHeaders = $.getOpt('headers');\n if(typeof customHeaders === 'function') {\n customHeaders = customHeaders($.fileObj, $);\n }\n\n $h.each(customHeaders, function(k,v) {\n $.xhr.setRequestHeader(k, v);\n });\n\n if ($.getOpt('chunkFormat') == 'blob') {\n $.xhr.send(data);\n }\n };\n $.abort = function(){\n // Abort and reset\n if($.xhr) $.xhr.abort();\n $.xhr = null;\n };\n $.status = function(){\n // Returns: 'pending', 'uploading', 'success', 'error'\n if($.pendingRetry) {\n // if pending retry then that's effectively the same as actively uploading,\n // there might just be a slight delay before the retry starts\n return('uploading');\n } else if(!$.xhr) {\n return('pending');\n } else if($.xhr.readyState<4) {\n // Status is really 'OPENED', 'HEADERS_RECEIVED' or 'LOADING' - meaning that stuff is happening\n return('uploading');\n } else {\n if($.xhr.status == 200 || $.xhr.status == 201) {\n // HTTP 200, 201 (created)\n return('success');\n } else if($h.contains($.getOpt('permanentErrors'), $.xhr.status) || $.retries >= $.getOpt('maxChunkRetries')) {\n // HTTP 415/500/501, permanent error\n return('error');\n } else {\n // this should never happen, but we'll reset and queue a retry\n // a likely case for this would be 503 service unavailable\n $.abort();\n return('pending');\n }\n }\n };\n $.message = function(){\n return($.xhr ? $.xhr.responseText : '');\n };\n $.progress = function(relative){\n if(typeof(relative)==='undefined') relative = false;\n var factor = (relative ? ($.endByte-$.startByte)/$.fileObjSize : 1);\n if($.pendingRetry) return(0);\n if(!$.xhr || !$.xhr.status) factor*=.95;\n var s = $.status();\n switch(s){\n case 'success':\n case 'error':\n return(1*factor);\n case 'pending':\n return(0*factor);\n default:\n return($.loaded/($.endByte-$.startByte)*factor);\n }\n };\n return(this);\n }\n\n // QUEUE\n $.uploadNextChunk = function(){\n var found = false;\n\n // In some cases (such as videos) it's really handy to upload the first\n // and last chunk of a file quickly; this let's the server check the file's\n // metadata and determine if there's even a point in continuing.\n if ($.getOpt('prioritizeFirstAndLastChunk')) {\n $h.each($.files, function(file){\n if(file.chunks.length && file.chunks[0].status()=='pending' && file.chunks[0].preprocessState === 0) {\n file.chunks[0].send();\n found = true;\n return(false);\n }\n if(file.chunks.length>1 && file.chunks[file.chunks.length-1].status()=='pending' && file.chunks[file.chunks.length-1].preprocessState === 0) {\n file.chunks[file.chunks.length-1].send();\n found = true;\n return(false);\n }\n });\n if(found) return(true);\n }\n\n // Now, simply look for the next, best thing to upload\n $h.each($.files, function(file){\n if(file.isPaused()===false){\n $h.each(file.chunks, function(chunk){\n if(chunk.status()=='pending' && chunk.preprocessState === 0) {\n chunk.send();\n found = true;\n return(false);\n }\n });\n }\n if(found) return(false);\n });\n if(found) return(true);\n\n // The are no more outstanding chunks to upload, check is everything is done\n var outstanding = false;\n $h.each($.files, function(file){\n if(!file.isComplete()) {\n outstanding = true;\n return(false);\n }\n });\n if(!outstanding) {\n // All chunks have been uploaded, complete\n $.fire('complete');\n }\n return(false);\n };\n\n\n // PUBLIC METHODS FOR RESUMABLE.JS\n $.assignBrowse = function(domNodes, isDirectory){\n if(typeof(domNodes.length)=='undefined') domNodes = [domNodes];\n\n $h.each(domNodes, function(domNode) {\n var input;\n if(domNode.tagName==='INPUT' && domNode.type==='file'){\n input = domNode;\n } else {\n input = document.createElement('input');\n input.setAttribute('type', 'file');\n input.style.display = 'none';\n domNode.addEventListener('click', function(){\n input.style.opacity = 0;\n input.style.display='block';\n input.focus();\n input.click();\n input.style.display='none';\n }, false);\n domNode.appendChild(input);\n }\n var maxFiles = $.getOpt('maxFiles');\n if (typeof(maxFiles)==='undefined'||maxFiles!=1){\n input.setAttribute('multiple', 'multiple');\n } else {\n input.removeAttribute('multiple');\n }\n if(isDirectory){\n input.setAttribute('webkitdirectory', 'webkitdirectory');\n } else {\n input.removeAttribute('webkitdirectory');\n }\n var fileTypes = $.getOpt('fileType');\n if (typeof (fileTypes) !== 'undefined' && fileTypes.length >= 1) {\n input.setAttribute('accept', fileTypes.map(function (e) { return '.' + e }).join(','));\n }\n else {\n input.removeAttribute('accept');\n }\n // When new files are added, simply append them to the overall list\n input.addEventListener('change', function(e){\n appendFilesFromFileList(e.target.files,e);\n var clearInput = $.getOpt('clearInput');\n if (clearInput) {\n e.target.value = '';\n }\n }, false);\n });\n };\n $.assignDrop = function(domNodes){\n if(typeof(domNodes.length)=='undefined') domNodes = [domNodes];\n\n $h.each(domNodes, function(domNode) {\n domNode.addEventListener('dragover', preventDefault, false);\n domNode.addEventListener('dragenter', preventDefault, false);\n domNode.addEventListener('drop', onDrop, false);\n });\n };\n $.unAssignDrop = function(domNodes) {\n if (typeof(domNodes.length) == 'undefined') domNodes = [domNodes];\n\n $h.each(domNodes, function(domNode) {\n domNode.removeEventListener('dragover', preventDefault);\n domNode.removeEventListener('dragenter', preventDefault);\n domNode.removeEventListener('drop', onDrop);\n });\n };\n $.isUploading = function(){\n var uploading = false;\n $h.each($.files, function(file){\n if (file.isUploading()) {\n uploading = true;\n return(false);\n }\n });\n return(uploading);\n };\n $.upload = function(){\n // Make sure we don't start too many uploads at once\n if($.isUploading()) return;\n // Kick off the queue\n $.fire('uploadStart');\n for (var num=1; num<=$.getOpt('simultaneousUploads'); num++) {\n $.uploadNextChunk();\n }\n };\n $.pause = function(){\n // Resume all chunks currently being uploaded\n $h.each($.files, function(file){\n file.abort();\n });\n $.fire('pause');\n };\n $.cancel = function(){\n $.fire('beforeCancel');\n for(var i = $.files.length - 1; i >= 0; i--) {\n $.files[i].cancel();\n }\n $.fire('cancel');\n };\n $.progress = function(){\n var totalDone = 0;\n var totalSize = 0;\n // Resume all chunks currently being uploaded\n $h.each($.files, function(file){\n totalDone += file.progress()*file.size;\n totalSize += file.size;\n });\n return(totalSize>0 ? totalDone/totalSize : 0);\n };\n $.addFile = function(file, event){\n appendFilesFromFileList([file], event);\n };\n $.addFiles = function(files, event){\n appendFilesFromFileList(files, event);\n };\n $.removeFile = function(file){\n for(var i = $.files.length - 1; i >= 0; i--) {\n if($.files[i] === file) {\n $.files.splice(i, 1);\n }\n }\n };\n $.getFromUniqueIdentifier = function(uniqueIdentifier){\n var ret = false;\n $h.each($.files, function(f){\n if(f.uniqueIdentifier==uniqueIdentifier) ret = f;\n });\n return(ret);\n };\n $.getSize = function(){\n var totalSize = 0;\n $h.each($.files, function(file){\n totalSize += file.size;\n });\n return(totalSize);\n };\n $.handleDropEvent = function (e) {\n onDrop(e);\n };\n $.handleChangeEvent = function (e) {\n appendFilesFromFileList(e.target.files, e);\n e.target.value = '';\n };\n $.updateQuery = function(query){\n $.opts.query = query;\n };\n\n return(this);\n };\n\n\n // Node.js-style export for Node and Component\n if (typeof module != 'undefined') {\n module.exports = Resumable;\n } else if (typeof define === \"function\" && define.amd) {\n // AMD/requirejs: Define the module\n define(function(){\n return Resumable;\n });\n } else {\n // Browser: Expose to window\n window.Resumable = Resumable;\n }\n\n})();\n","/*!\n * Vue.js v2.7.16\n * (c) 2014-2023 Evan You\n * Released under the MIT License.\n */\n/*!\n * Vue.js v2.7.16\n * (c) 2014-2023 Evan You\n * Released under the MIT License.\n */\n\"use strict\";const t=Object.freeze({}),e=Array.isArray;function n(t){return null==t}function o(t){return null!=t}function r(t){return!0===t}function s(t){return\"string\"==typeof t||\"number\"==typeof t||\"symbol\"==typeof t||\"boolean\"==typeof t}function i(t){return\"function\"==typeof t}function c(t){return null!==t&&\"object\"==typeof t}const a=Object.prototype.toString;function l(t){return\"[object Object]\"===a.call(t)}function u(t){const e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return o(t)&&\"function\"==typeof t.then&&\"function\"==typeof t.catch}function d(t){return null==t?\"\":Array.isArray(t)||l(t)&&t.toString===a?JSON.stringify(t,p,2):String(t)}function p(t,e){return e&&e.__v_isRef?e.value:e}function h(t){const e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){const n=Object.create(null),o=t.split(\",\");for(let t=0;tn[t.toLowerCase()]:t=>n[t]}const g=m(\"slot,component\",!0),v=m(\"key,ref,slot,slot-scope,is\");function y(t,e){const n=t.length;if(n){if(e===t[n-1])return void(t.length=n-1);const o=t.indexOf(e);if(o>-1)return t.splice(o,1)}}const _=Object.prototype.hasOwnProperty;function $(t,e){return _.call(t,e)}function b(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const w=/-(\\w)/g,x=b((t=>t.replace(w,((t,e)=>e?e.toUpperCase():\"\")))),C=b((t=>t.charAt(0).toUpperCase()+t.slice(1))),k=/\\B([A-Z])/g,S=b((t=>t.replace(k,\"-$1\").toLowerCase()));const O=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){const o=arguments.length;return o?o>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function T(t,e){e=e||0;let n=t.length-e;const o=new Array(n);for(;n--;)o[n]=t[n+e];return o}function A(t,e){for(const n in e)t[n]=e[n];return t}function j(t){const e={};for(let n=0;n!1,P=t=>t;function D(t,e){if(t===e)return!0;const n=c(t),o=c(e);if(!n||!o)return!n&&!o&&String(t)===String(e);try{const n=Array.isArray(t),o=Array.isArray(e);if(n&&o)return t.length===e.length&&t.every(((t,n)=>D(t,e[n])));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(n||o)return!1;{const n=Object.keys(t),o=Object.keys(e);return n.length===o.length&&n.every((n=>D(t[n],e[n])))}}catch(t){return!1}}function M(t,e){for(let n=0;n0,X=W&&W.indexOf(\"edge/\")>0;W&&W.indexOf(\"android\");const Y=W&&/iphone|ipad|ipod|ios/.test(W);W&&/chrome\\/\\d+/.test(W),W&&/phantomjs/.test(W);const Q=W&&W.match(/firefox\\/(\\d+)/),tt={}.watch;let et,nt=!1;if(q)try{const t={};Object.defineProperty(t,\"passive\",{get(){nt=!0}}),window.addEventListener(\"test-passive\",null,t)}catch(t){}const ot=()=>(void 0===et&&(et=!q&&\"undefined\"!=typeof global&&(global.process&&\"server\"===global.process.env.VUE_ENV)),et),rt=q&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function st(t){return\"function\"==typeof t&&/native code/.test(t.toString())}const it=\"undefined\"!=typeof Symbol&&st(Symbol)&&\"undefined\"!=typeof Reflect&&st(Reflect.ownKeys);let ct;ct=\"undefined\"!=typeof Set&&st(Set)?Set:class{constructor(){this.set=Object.create(null)}has(t){return!0===this.set[t]}add(t){this.set[t]=!0}clear(){this.set=Object.create(null)}};let at=null;function lt(t=null){t||at&&at._scope.off(),at=t,t&&t._scope.on()}class ut{constructor(t,e,n,o,r,s,i,c){this.tag=t,this.data=e,this.children=n,this.text=o,this.elm=r,this.ns=void 0,this.context=s,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=i,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=c,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}get child(){return this.componentInstance}}const ft=(t=\"\")=>{const e=new ut;return e.text=t,e.isComment=!0,e};function dt(t){return new ut(void 0,void 0,void 0,String(t))}function pt(t){const e=new ut(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}let ht=0;const mt=[],gt=()=>{for(let t=0;tt)),e._pending=!1}mt.length=0};class vt{constructor(){this._pending=!1,this.id=ht++,this.subs=[]}addSub(t){this.subs.push(t)}removeSub(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,mt.push(this))}depend(t){vt.target&&vt.target.addDep(this)}notify(t){const e=this.subs.filter((t=>t));for(let t=0,n=e.length;t{const t=e[n];if(Ht(t))return t.value;{const e=t&&t.__ob__;return e&&e.dep.depend(),t}},set:t=>{const o=e[n];Ht(o)&&!Ht(t)?o.value=t:e[n]=t}})}function zt(t,e,n){const o=t[e];if(Ht(o))return o;const r={get value(){const o=t[e];return void 0===o?n:o},set value(n){t[e]=n}};return V(r,Ft,!0),r}const Vt=\"__v_rawToReadonly\",Kt=\"__v_rawToShallowReadonly\";function Jt(t){return qt(t,!1)}function qt(t,e){if(!l(t))return t;if(Rt(t))return t;const n=e?Kt:Vt,o=t[n];if(o)return o;const r=Object.create(Object.getPrototypeOf(t));V(t,n,r),V(r,\"__v_isReadonly\",!0),V(r,\"__v_raw\",t),Ht(t)&&V(r,Ft,!0),(e||Lt(t))&&V(r,\"__v_isShallow\",!0);const s=Object.keys(t);for(let n=0;n{const e=\"&\"===t.charAt(0),n=\"~\"===(t=e?t.slice(1):t).charAt(0),o=\"!\"===(t=n?t.slice(1):t).charAt(0);return{name:t=o?t.slice(1):t,once:n,capture:o,passive:e}}));function Gt(t,n){function o(){const t=o.fns;if(!e(t))return vn(t,null,arguments,n,\"v-on handler\");{const e=t.slice();for(let t=0;t0&&(l=ne(l,`${i||\"\"}_${a}`),ee(l[0])&&ee(f)&&(c[u]=dt(f.text+l[0].text),l.shift()),c.push.apply(c,l)):s(l)?ee(f)?c[u]=dt(f.text+l):\"\"!==l&&c.push(dt(l)):ee(l)&&ee(f)?c[u]=dt(f.text+l.text):(r(t._isVList)&&o(l.tag)&&n(l.key)&&o(i)&&(l.key=`__vlist${i}_${a}__`),c.push(l)));return c}const oe=1,re=2;function se(t,n,a,l,u,f){return(e(a)||s(a))&&(u=l,l=a,a=void 0),r(f)&&(u=re),function(t,n,r,s,a){if(o(r)&&o(r.__ob__))return ft();o(r)&&o(r.is)&&(n=r.is);if(!n)return ft();e(s)&&i(s[0])&&((r=r||{}).scopedSlots={default:s[0]},s.length=0);a===re?s=te(s):a===oe&&(s=function(t){for(let n=0;n0,c=n?!!n.$stable:!i,a=n&&n.$key;if(n){if(n._normalized)return n._normalized;if(c&&r&&r!==t&&a===r.$key&&!i&&!r.$hasNormal)return r;s={};for(const t in n)n[t]&&\"$\"!==t[0]&&(s[t]=Se(e,o,t,n[t]))}else s={};for(const t in o)t in s||(s[t]=Oe(o,t));return n&&Object.isExtensible(n)&&(n._normalized=s),V(s,\"$stable\",c),V(s,\"$key\",a),V(s,\"$hasNormal\",i),s}function Se(t,n,o,r){const s=function(){const n=at;lt(t);let o=arguments.length?r.apply(null,arguments):r({});o=o&&\"object\"==typeof o&&!e(o)?[o]:te(o);const s=o&&o[0];return lt(n),o&&(!s||1===o.length&&s.isComment&&!Ce(s))?void 0:o};return r.proxy&&Object.defineProperty(n,o,{get:s,enumerable:!0,configurable:!0}),s}function Oe(t,e){return()=>t[e]}function Te(e){return{get attrs(){if(!e._attrsProxy){const n=e._attrsProxy={};V(n,\"_v_attr_proxy\",!0),Ae(n,e.$attrs,t,e,\"$attrs\")}return e._attrsProxy},get listeners(){if(!e._listenersProxy){Ae(e._listenersProxy={},e.$listeners,t,e,\"$listeners\")}return e._listenersProxy},get slots(){return function(t){t._slotsProxy||Ee(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(e)},emit:O(e.$emit,e),expose(t){t&&Object.keys(t).forEach((n=>Ut(e,t,n)))}}}function Ae(t,e,n,o,r){let s=!1;for(const i in e)i in t?e[i]!==n[i]&&(s=!0):(s=!0,je(t,i,o,r));for(const n in t)n in e||(s=!0,delete t[n]);return s}function je(t,e,n,o){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:()=>n[o][e]})}function Ee(t,e){for(const n in e)t[n]=e[n];for(const n in t)n in e||delete t[n]}function Ne(){const t=at;return t._setupContext||(t._setupContext=Te(t))}let Pe,De,Me=null;function Ie(t,e){return(t.__esModule||it&&\"Module\"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function Le(t){if(e(t))for(let e=0;e{Ve=e}}function Je(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function qe(t,e){if(e){if(t._directInactive=!1,Je(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(let e=0;edocument.createEvent(\"Event\").timeStamp&&(on=()=>t.now())}const rn=(t,e)=>{if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function sn(){let t,e;for(nn=on(),tn=!0,Ge.sort(rn),en=0;enen&&Ge[e].id>t.id;)e--;Ge.splice(e+1,0,t)}else Ge.push(t);Qe||(Qe=!0,kn(sn))}}const an=\"watcher\",ln=`${an} callback`,un=`${an} getter`,fn=`${an} cleanup`;function dn(t,e){return hn(t,null,{flush:\"post\"})}const pn={};function hn(n,o,{immediate:r,deep:s,flush:c=\"pre\",onTrack:a,onTrigger:l}=t){const u=at,f=(t,e,n=null)=>{const o=vn(t,null,n,u,e);return s&&o&&o.__ob__&&o.__ob__.dep.depend(),o};let d,p,h=!1,m=!1;if(Ht(n)?(d=()=>n.value,h=Lt(n)):It(n)?(d=()=>(n.__ob__.dep.depend(),n),s=!0):e(n)?(m=!0,h=n.some((t=>It(t)||Lt(t))),d=()=>n.map((t=>Ht(t)?t.value:It(t)?(t.__ob__.dep.depend(),Un(t)):i(t)?f(t,un):void 0))):d=i(n)?o?()=>f(n,un):()=>{if(!u||!u._isDestroyed)return p&&p(),f(n,an,[g])}:E,o&&s){const t=d;d=()=>Un(t())}let g=t=>{p=v.onStop=()=>{f(t,fn)}};if(ot())return g=E,o?r&&f(o,ln,[d(),m?[]:void 0,g]):d(),E;const v=new Kn(at,d,E,{lazy:!0});v.noRecurse=!o;let y=m?[]:pn;return v.run=()=>{if(v.active)if(o){const t=v.get();(s||h||(m?t.some(((t,e)=>L(t,y[e]))):L(t,y)))&&(p&&p(),f(o,ln,[t,y===pn?void 0:y,g]),y=t)}else v.get()},\"sync\"===c?v.update=v.run:\"post\"===c?(v.post=!0,v.update=()=>cn(v)):v.update=()=>{if(u&&u===at&&!u._isMounted){const t=u._preWatchers||(u._preWatchers=[]);t.indexOf(v)<0&&t.push(v)}else cn(v)},o?r?v.run():y=v.get():\"post\"===c&&u?u.$once(\"hook:mounted\",(()=>v.get())):v.get(),()=>{v.teardown()}}function mn(t){const e=t._provided,n=t.$parent&&t.$parent._provided;return n===e?t._provided=Object.create(n):e}function gn(t,e,n){_t();try{if(e){let o=e;for(;o=o.$parent;){const r=o.$options.errorCaptured;if(r)for(let s=0;sgn(t,o,r+\" (Promise/async)\"))),s._handled=!0)}catch(t){gn(t,o,r)}return s}function yn(t,e,n){if(B.errorHandler)try{return B.errorHandler.call(null,t,e,n)}catch(e){e!==t&&_n(e)}_n(t)}function _n(t,e,n){if(!q||\"undefined\"==typeof console)throw t;console.error(t)}let $n=!1;const bn=[];let wn,xn=!1;function Cn(){xn=!1;const t=bn.slice(0);bn.length=0;for(let e=0;e{t.then(Cn),Y&&setTimeout(E)},$n=!0}else if(Z||\"undefined\"==typeof MutationObserver||!st(MutationObserver)&&\"[object MutationObserverConstructor]\"!==MutationObserver.toString())wn=\"undefined\"!=typeof setImmediate&&st(setImmediate)?()=>{setImmediate(Cn)}:()=>{setTimeout(Cn,0)};else{let t=1;const e=new MutationObserver(Cn),n=document.createTextNode(String(t));e.observe(n,{characterData:!0}),wn=()=>{t=(t+1)%2,n.data=String(t)},$n=!0}function kn(t,e){let n;if(bn.push((()=>{if(t)try{t.call(e)}catch(t){gn(t,e,\"nextTick\")}else n&&n(e)})),xn||(xn=!0,wn()),!t&&\"undefined\"!=typeof Promise)return new Promise((t=>{n=t}))}function Sn(t){return(e,n=at)=>{if(n)return function(t,e,n){const o=t.$options;o[e]=go(o[e],n)}(n,t,e)}}const On=Sn(\"beforeMount\"),Tn=Sn(\"mounted\"),An=Sn(\"beforeUpdate\"),jn=Sn(\"updated\"),En=Sn(\"beforeDestroy\"),Nn=Sn(\"destroyed\"),Pn=Sn(\"activated\"),Dn=Sn(\"deactivated\"),Mn=Sn(\"serverPrefetch\"),In=Sn(\"renderTracked\"),Ln=Sn(\"renderTriggered\"),Rn=Sn(\"errorCaptured\");const Fn=\"2.7.16\";var Hn=Object.freeze({__proto__:null,version:Fn,defineComponent:function(t){return t},ref:function(t){return Bt(t,!1)},shallowRef:function(t){return Bt(t,!0)},isRef:Ht,toRef:zt,toRefs:function(t){const n=e(t)?new Array(t.length):{};for(const e in t)n[e]=zt(t,e);return n},unref:function(t){return Ht(t)?t.value:t},proxyRefs:function(t){if(It(t))return t;const e={},n=Object.keys(t);for(let o=0;o{e.depend()}),(()=>{e.notify()})),r={get value(){return n()},set value(t){o(t)}};return V(r,Ft,!0),r},triggerRef:function(t){t.dep&&t.dep.notify()},reactive:function(t){return Mt(t,!1),t},isReactive:It,isReadonly:Rt,isShallow:Lt,isProxy:function(t){return It(t)||Rt(t)},shallowReactive:Dt,markRaw:function(t){return Object.isExtensible(t)&&V(t,\"__v_skip\",!0),t},toRaw:function t(e){const n=e&&e.__v_raw;return n?t(n):e},readonly:Jt,shallowReadonly:function(t){return qt(t,!0)},computed:function(t,e){let n,o;const r=i(t);r?(n=t,o=E):(n=t.get,o=t.set);const s=ot()?null:new Kn(at,n,E,{lazy:!0}),c={effect:s,get value(){return s?(s.dirty&&s.evaluate(),vt.target&&s.depend(),s.value):n()},set value(t){o(t)}};return V(c,Ft,!0),V(c,\"__v_isReadonly\",r),c},watch:function(t,e,n){return hn(t,e,n)},watchEffect:function(t,e){return hn(t,null,e)},watchPostEffect:dn,watchSyncEffect:function(t,e){return hn(t,null,{flush:\"sync\"})},EffectScope:Ue,effectScope:function(t){return new Ue(t)},onScopeDispose:function(t){De&&De.cleanups.push(t)},getCurrentScope:ze,provide:function(t,e){at&&(mn(at)[t]=e)},inject:function(t,e,n=!1){const o=at;if(o){const r=o.$parent&&o.$parent._provided;if(r&&t in r)return r[t];if(arguments.length>1)return n&&i(e)?e.call(o):e}},h:function(t,e,n){return se(at,t,e,n,2,!0)},getCurrentInstance:function(){return at&&{proxy:at}},useSlots:function(){return Ne().slots},useAttrs:function(){return Ne().attrs},useListeners:function(){return Ne().listeners},mergeDefaults:function(t,n){const o=e(t)?t.reduce(((t,e)=>(t[e]={},t)),{}):t;for(const t in n){const r=o[t];r?e(r)||i(r)?o[t]={type:r,default:n[t]}:r.default=n[t]:null===r&&(o[t]={default:n[t]})}return o},nextTick:kn,set:Et,del:Nt,useCssModule:function(e=\"$style\"){{if(!at)return t;const n=at[e];return n||t}},useCssVars:function(t){if(!q)return;const e=at;e&&dn((()=>{const n=e.$el,o=t(e,e._setupProxy);if(n&&1===n.nodeType){const t=n.style;for(const e in o)t.setProperty(`--${e}`,o[e])}}))},defineAsyncComponent:function(t){i(t)&&(t={loader:t});const{loader:e,loadingComponent:n,errorComponent:o,delay:r=200,timeout:s,suspensible:c=!1,onError:a}=t;let l=null,u=0;const f=()=>{let t;return l||(t=l=e().catch((t=>{if(t=t instanceof Error?t:new Error(String(t)),a)return new Promise(((e,n)=>{a(t,(()=>e((u++,l=null,f()))),(()=>n(t)),u+1)}));throw t})).then((e=>t!==l&&l?l:(e&&(e.__esModule||\"Module\"===e[Symbol.toStringTag])&&(e=e.default),e))))};return()=>({component:f(),delay:r,timeout:s,error:o,loading:n})},onBeforeMount:On,onMounted:Tn,onBeforeUpdate:An,onUpdated:jn,onBeforeUnmount:En,onUnmounted:Nn,onActivated:Pn,onDeactivated:Dn,onServerPrefetch:Mn,onRenderTracked:In,onRenderTriggered:Ln,onErrorCaptured:function(t,e=at){Rn(t,e)}});const Bn=new ct;function Un(t){return zn(t,Bn),Bn.clear(),t}function zn(t,n){let o,r;const s=e(t);if(!(!s&&!c(t)||t.__v_skip||Object.isFrozen(t)||t instanceof ut)){if(t.__ob__){const e=t.__ob__.dep.id;if(n.has(e))return;n.add(e)}if(s)for(o=t.length;o--;)zn(t[o],n);else if(Ht(t))zn(t.value,n);else for(r=Object.keys(t),o=r.length;o--;)zn(t[r[o]],n)}}let Vn=0;class Kn{constructor(t,e,n,o,r){!function(t,e=De){e&&e.active&&e.effects.push(t)}(this,De&&!De._vm?De:t?t._scope:void 0),(this.vm=t)&&r&&(t._watcher=this),o?(this.deep=!!o.deep,this.user=!!o.user,this.lazy=!!o.lazy,this.sync=!!o.sync,this.before=o.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++Vn,this.active=!0,this.post=!1,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new ct,this.newDepIds=new ct,this.expression=\"\",i(e)?this.getter=e:(this.getter=function(t){if(K.test(t))return;const e=t.split(\".\");return function(t){for(let n=0;n(this.$slots||ke(i,n.scopedSlots,this.$slots=we(s,i)),this.$slots),Object.defineProperty(this,\"scopedSlots\",{enumerable:!0,get(){return ke(i,n.scopedSlots,this.slots())}}),u&&(this.$options=a,this.$slots=this.slots(),this.$scopedSlots=ke(i,n.scopedSlots,this.$slots)),a._scopeId?this._c=(t,n,o,r)=>{const s=se(l,t,n,o,r,f);return s&&!e(s)&&(s.fnScopeId=a._scopeId,s.fnContext=i),s}:this._c=(t,e,n,o)=>se(l,t,e,n,o,f)}function ro(t,e,n,o,r){const s=pt(t);return s.fnContext=n,s.fnOptions=o,e.slot&&((s.data||(s.data={})).slot=e.slot),s}function so(t,e){for(const n in e)t[x(n)]=e[n]}function io(t){return t.name||t.__name||t._componentTag}be(oo.prototype);const co={init(t,e){if(t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive){const e=t;co.prepatch(e,e)}else{(t.componentInstance=function(t,e){const n={_isComponent:!0,_parentVnode:t,parent:e},r=t.data.inlineTemplate;o(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns);return new t.componentOptions.Ctor(n)}(t,Ve)).$mount(e?t.elm:void 0,e)}},prepatch(e,n){const o=n.componentOptions;!function(e,n,o,r,s){const i=r.data.scopedSlots,c=e.$scopedSlots,a=!!(i&&!i.$stable||c!==t&&!c.$stable||i&&e.$scopedSlots.$key!==i.$key||!i&&e.$scopedSlots.$key);let l=!!(s||e.$options._renderChildren||a);const u=e.$vnode;e.$options._parentVnode=r,e.$vnode=r,e._vnode&&(e._vnode.parent=r),e.$options._renderChildren=s;const f=r.data.attrs||t;e._attrsProxy&&Ae(e._attrsProxy,f,u.data&&u.data.attrs||t,e,\"$attrs\")&&(l=!0),e.$attrs=f,o=o||t;const d=e.$options._parentListeners;if(e._listenersProxy&&Ae(e._listenersProxy,o,d||t,e,\"$listeners\"),e.$listeners=e.$options._parentListeners=o,Be(e,o,d),n&&e.$options.props){St(!1);const t=e._props,o=e.$options._propKeys||[];for(let r=0;ry(r,s)));const u=t=>{for(let t=0,e=r.length;t{t.resolved=Ie(n,e),i?r.length=0:u(!0)})),p=I((e=>{o(t.errorComp)&&(t.error=!0,u(!0))})),h=t(d,p);return c(h)&&(f(h)?n(t.resolved)&&h.then(d,p):f(h.component)&&(h.component.then(d,p),o(h.error)&&(t.errorComp=Ie(h.error,e)),o(h.loading)&&(t.loadingComp=Ie(h.loading,e),0===h.delay?t.loading=!0:a=setTimeout((()=>{a=null,n(t.resolved)&&n(t.error)&&(t.loading=!0,u(!1))}),h.delay||200)),o(h.timeout)&&(l=setTimeout((()=>{l=null,n(t.resolved)&&p(null)}),h.timeout)))),i=!1,t.loading?t.loadingComp:t.resolved}}(p,d),void 0===s))return function(t,e,n,o,r){const s=ft();return s.asyncFactory=t,s.asyncMeta={data:e,context:n,children:o,tag:r},s}(p,i,a,l,u);i=i||{},no(s),o(i.model)&&function(t,n){const r=t.model&&t.model.prop||\"value\",s=t.model&&t.model.event||\"input\";(n.attrs||(n.attrs={}))[r]=n.model.value;const i=n.on||(n.on={}),c=i[s],a=n.model.callback;o(c)?(e(c)?-1===c.indexOf(a):c!==a)&&(i[s]=[a].concat(c)):i[s]=a}(s.options,i);const h=function(t,e,r){const s=e.options.props;if(n(s))return;const i={},{attrs:c,props:a}=t;if(o(c)||o(a))for(const t in s){const e=S(t);Qt(i,a,t,e,!0)||Qt(i,c,t,e,!1)}return i}(i,s);if(r(s.options.functional))return function(n,r,s,i,c){const a=n.options,l={},u=a.props;if(o(u))for(const e in u)l[e]=bo(e,u,r||t);else o(s.attrs)&&so(l,s.attrs),o(s.props)&&so(l,s.props);const f=new oo(s,l,c,i,n),d=a.render.call(null,f._c,f);if(d instanceof ut)return ro(d,s,f.parent,a);if(e(d)){const t=te(d)||[],e=new Array(t.length);for(let n=0;n{t(n,o),e(n,o)};return n._merged=!0,n}let fo=E;const po=B.optionMergeStrategies;function ho(t,e,n=!0){if(!e)return t;let o,r,s;const i=it?Reflect.ownKeys(e):Object.keys(e);for(let c=0;c{po[t]=go})),F.forEach((function(t){po[t+\"s\"]=vo})),po.watch=function(t,n,o,r){if(t===tt&&(t=void 0),n===tt&&(n=void 0),!n)return Object.create(t||null);if(!t)return n;const s={};A(s,t);for(const t in n){let o=s[t];const r=n[t];o&&!e(o)&&(o=[o]),s[t]=o?o.concat(r):e(r)?r:[r]}return s},po.props=po.methods=po.inject=po.computed=function(t,e,n,o){if(!t)return e;const r=Object.create(null);return A(r,t),e&&A(r,e),r},po.provide=function(t,e){return t?function(){const n=Object.create(null);return ho(n,i(t)?t.call(this):t),e&&ho(n,i(e)?e.call(this):e,!1),n}:e};const yo=function(t,e){return void 0===e?t:e};function _o(t,n,o){if(i(n)&&(n=n.options),function(t,n){const o=t.props;if(!o)return;const r={};let s,i,c;if(e(o))for(s=o.length;s--;)i=o[s],\"string\"==typeof i&&(c=x(i),r[c]={type:null});else if(l(o))for(const t in o)i=o[t],c=x(t),r[c]=l(i)?i:{type:i};t.props=r}(n),function(t,n){const o=t.inject;if(!o)return;const r=t.inject={};if(e(o))for(let t=0;t-1)if(s&&!$(r,\"default\"))c=!1;else if(\"\"===c||c===S(t)){const t=ko(String,r.type);(t<0||a-1:\"string\"==typeof t?t.split(\",\").indexOf(n)>-1:(o=t,\"[object RegExp]\"===a.call(o)&&t.test(n));var o}function jo(t,e){const{cache:n,keys:o,_vnode:r,$vnode:s}=t;for(const t in n){const s=n[t];if(s){const i=s.name;i&&!e(i)&&Eo(n,t,o,r)}}s.componentOptions.children=void 0}function Eo(t,e,n,o){const r=t[e];!r||o&&r.tag===o.tag||r.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(e){e.prototype._init=function(e){const n=this;n._uid=eo++,n._isVue=!0,n.__v_skip=!0,n._scope=new Ue(!0),n._scope.parent=void 0,n._scope._vm=!0,e&&e._isComponent?function(t,e){const n=t.$options=Object.create(t.constructor.options),o=e._parentVnode;n.parent=e.parent,n._parentVnode=o;const r=o.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(n,e):n.$options=_o(no(n.constructor),e||{},n),n._renderProxy=n,n._self=n,function(t){const e=t.$options;let n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(n),function(t){t._events=Object.create(null),t._hasHookEvent=!1;const e=t.$options._parentListeners;e&&Be(t,e)}(n),function(e){e._vnode=null,e._staticTrees=null;const n=e.$options,o=e.$vnode=n._parentVnode,r=o&&o.context;e.$slots=we(n._renderChildren,r),e.$scopedSlots=o?ke(e.$parent,o.data.scopedSlots,e.$slots):t,e._c=(t,n,o,r)=>se(e,t,n,o,r,!1),e.$createElement=(t,n,o,r)=>se(e,t,n,o,r,!0);const s=o&&o.data;jt(e,\"$attrs\",s&&s.attrs||t,null,!0),jt(e,\"$listeners\",n._parentListeners||t,null,!0)}(n),Ze(n,\"beforeCreate\",void 0,!1),function(t){const e=to(t.$options.inject,t);e&&(St(!1),Object.keys(e).forEach((n=>{jt(t,n,e[n])})),St(!0))}(n),Wn(n),function(t){const e=t.$options.provide;if(e){const n=i(e)?e.call(t):e;if(!c(n))return;const o=mn(t),r=it?Reflect.ownKeys(n):Object.keys(n);for(let t=0;t1?T(n):n;const o=T(arguments,1),r=`event handler for \"${t}\"`;for(let t=0,s=n.length;tparseInt(this.max)&&Eo(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created(){this.cache=Object.create(null),this.keys=[]},destroyed(){for(const t in this.cache)Eo(this.cache,t,this.keys)},mounted(){this.cacheVNode(),this.$watch(\"include\",(t=>{jo(this,(e=>Ao(t,e)))})),this.$watch(\"exclude\",(t=>{jo(this,(e=>!Ao(t,e)))}))},updated(){this.cacheVNode()},render(){const t=this.$slots.default,e=Le(t),n=e&&e.componentOptions;if(n){const t=To(n),{include:o,exclude:r}=this;if(o&&(!t||!Ao(o,t))||r&&t&&Ao(r,t))return e;const{cache:s,keys:i}=this,c=null==e.key?n.Ctor.cid+(n.tag?`::${n.tag}`:\"\"):e.key;s[c]?(e.componentInstance=s[c].componentInstance,y(i,c),i.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){const e={get:()=>B};Object.defineProperty(t,\"config\",e),t.util={warn:fo,extend:A,mergeOptions:_o,defineReactive:jt},t.set=Et,t.delete=Nt,t.nextTick=kn,t.observable=t=>(At(t),t),t.options=Object.create(null),F.forEach((e=>{t.options[e+\"s\"]=Object.create(null)})),t.options._base=t,A(t.options.components,Po),function(t){t.use=function(t){const e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;const n=T(arguments,1);return n.unshift(this),i(t.install)?t.install.apply(t,n):i(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=_o(this.options,t),this}}(t),Oo(t),function(t){F.forEach((e=>{t[e]=function(t,n){return n?(\"component\"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),\"directive\"===e&&i(n)&&(n={bind:n,update:n}),this.options[e+\"s\"][t]=n,n):this.options[e+\"s\"][t]}}))}(t)}(So),Object.defineProperty(So.prototype,\"$isServer\",{get:ot}),Object.defineProperty(So.prototype,\"$ssrContext\",{get(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(So,\"FunctionalRenderContext\",{value:oo}),So.version=Fn;const Do=m(\"style,class\"),Mo=m(\"input,textarea,option,select,progress\"),Io=(t,e,n)=>\"value\"===n&&Mo(t)&&\"button\"!==e||\"selected\"===n&&\"option\"===t||\"checked\"===n&&\"input\"===t||\"muted\"===n&&\"video\"===t,Lo=m(\"contenteditable,draggable,spellcheck\"),Ro=m(\"events,caret,typing,plaintext-only\"),Fo=(t,e)=>Vo(e)||\"false\"===e?\"false\":\"contenteditable\"===t&&Ro(e)?e:\"true\",Ho=m(\"allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible\"),Bo=\"http://www.w3.org/1999/xlink\",Uo=t=>\":\"===t.charAt(5)&&\"xlink\"===t.slice(0,5),zo=t=>Uo(t)?t.slice(6,t.length):\"\",Vo=t=>null==t||!1===t;function Ko(t){let e=t.data,n=t,r=t;for(;o(r.componentInstance);)r=r.componentInstance._vnode,r&&r.data&&(e=Jo(r.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Jo(e,n.data));return function(t,e){if(o(t)||o(e))return qo(t,Wo(e));return\"\"}(e.staticClass,e.class)}function Jo(t,e){return{staticClass:qo(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function qo(t,e){return t?e?t+\" \"+e:t:e||\"\"}function Wo(t){return Array.isArray(t)?function(t){let e,n=\"\";for(let r=0,s=t.length;rGo(t)||Xo(t);function Qo(t){return Xo(t)?\"svg\":\"math\"===t?\"math\":void 0}const tr=Object.create(null);const er=m(\"text,number,password,search,email,tel,url\");function nr(t){if(\"string\"==typeof t){const e=document.querySelector(t);return e||document.createElement(\"div\")}return t}var or=Object.freeze({__proto__:null,createElement:function(t,e){const n=document.createElement(t);return\"select\"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute(\"multiple\",\"multiple\"),n},createElementNS:function(t,e){return document.createElementNS(Zo[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,\"\")}}),rr={create(t,e){sr(e)},update(t,e){t.data.ref!==e.data.ref&&(sr(t,!0),sr(e))},destroy(t){sr(t,!0)}};function sr(t,n){const r=t.data.ref;if(!o(r))return;const s=t.context,c=t.componentInstance||t.elm,a=n?null:c,l=n?void 0:c;if(i(r))return void vn(r,s,[a],s,\"template ref function\");const u=t.data.refInFor,f=\"string\"==typeof r||\"number\"==typeof r,d=Ht(r),p=s.$refs;if(f||d)if(u){const t=f?p[r]:r.value;n?e(t)&&y(t,c):e(t)?t.includes(c)||t.push(c):f?(p[r]=[c],ir(s,r,p[r])):r.value=[c]}else if(f){if(n&&p[r]!==c)return;p[r]=l,ir(s,r,a)}else if(d){if(n&&r.value!==c)return;r.value=a}}function ir({_setupState:t},e,n){t&&$(t,e)&&(Ht(t[e])?t[e].value=n:t[e]=n)}const cr=new ut(\"\",{},[]),ar=[\"create\",\"activate\",\"update\",\"remove\",\"destroy\"];function lr(t,e){return t.key===e.key&&t.asyncFactory===e.asyncFactory&&(t.tag===e.tag&&t.isComment===e.isComment&&o(t.data)===o(e.data)&&function(t,e){if(\"input\"!==t.tag)return!0;let n;const r=o(n=t.data)&&o(n=n.attrs)&&n.type,s=o(n=e.data)&&o(n=n.attrs)&&n.type;return r===s||er(r)&&er(s)}(t,e)||r(t.isAsyncPlaceholder)&&n(e.asyncFactory.error))}function ur(t,e,n){let r,s;const i={};for(r=e;r<=n;++r)s=t[r].key,o(s)&&(i[s]=r);return i}var fr={create:dr,update:dr,destroy:function(t){dr(t,cr)}};function dr(t,e){(t.data.directives||e.data.directives)&&function(t,e){const n=t===cr,o=e===cr,r=hr(t.data.directives,t.context),s=hr(e.data.directives,e.context),i=[],c=[];let a,l,u;for(a in s)l=r[a],u=s[a],l?(u.oldValue=l.value,u.oldArg=l.arg,gr(u,\"update\",e,t),u.def&&u.def.componentUpdated&&c.push(u)):(gr(u,\"bind\",e,t),u.def&&u.def.inserted&&i.push(u));if(i.length){const o=()=>{for(let n=0;n{for(let n=0;n-1?$r(t,e,n):Ho(e)?Vo(n)?t.removeAttribute(e):(n=\"allowfullscreen\"===e&&\"EMBED\"===t.tagName?\"true\":e,t.setAttribute(e,n)):Lo(e)?t.setAttribute(e,Fo(e,n)):Uo(e)?Vo(n)?t.removeAttributeNS(Bo,zo(e)):t.setAttributeNS(Bo,e,n):$r(t,e,n)}function $r(t,e,n){if(Vo(n))t.removeAttribute(e);else{if(Z&&!G&&\"TEXTAREA\"===t.tagName&&\"placeholder\"===e&&\"\"!==n&&!t.__ieph){const e=n=>{n.stopImmediatePropagation(),t.removeEventListener(\"input\",e)};t.addEventListener(\"input\",e),t.__ieph=!0}t.setAttribute(e,n)}}var br={create:yr,update:yr};function wr(t,e){const r=e.elm,s=e.data,i=t.data;if(n(s.staticClass)&&n(s.class)&&(n(i)||n(i.staticClass)&&n(i.class)))return;let c=Ko(e);const a=r._transitionClasses;o(a)&&(c=qo(c,Wo(a))),c!==r._prevClass&&(r.setAttribute(\"class\",c),r._prevClass=c)}var xr={create:wr,update:wr};const Cr=/[\\w).+\\-_$\\]]/;function kr(t){let e,n,o,r,s,i=!1,c=!1,a=!1,l=!1,u=0,f=0,d=0,p=0;for(o=0;o=0&&(e=t.charAt(n),\" \"===e);n--);e&&Cr.test(e)||(l=!0)}}else void 0===r?(p=o+1,r=t.slice(0,o).trim()):h();function h(){(s||(s=[])).push(t.slice(p,o).trim()),p=o+1}if(void 0===r?r=t.slice(0,o).trim():0!==p&&h(),s)for(o=0;ot[e])).filter((t=>t)):[]}function Ar(t,e,n,o,r){(t.props||(t.props=[])).push(Rr({name:e,value:n,dynamic:r},o)),t.plain=!1}function jr(t,e,n,o,r){(r?t.dynamicAttrs||(t.dynamicAttrs=[]):t.attrs||(t.attrs=[])).push(Rr({name:e,value:n,dynamic:r},o)),t.plain=!1}function Er(t,e,n,o){t.attrsMap[e]=n,t.attrsList.push(Rr({name:e,value:n},o))}function Nr(t,e,n,o,r,s,i,c){(t.directives||(t.directives=[])).push(Rr({name:e,rawName:n,value:o,arg:r,isDynamicArg:s,modifiers:i},c)),t.plain=!1}function Pr(t,e,n){return n?`_p(${e},\"${t}\")`:t+e}function Dr(e,n,o,r,s,i,c,a){let l;(r=r||t).right?a?n=`(${n})==='click'?'contextmenu':(${n})`:\"click\"===n&&(n=\"contextmenu\",delete r.right):r.middle&&(a?n=`(${n})==='click'?'mouseup':(${n})`:\"click\"===n&&(n=\"mouseup\")),r.capture&&(delete r.capture,n=Pr(\"!\",n,a)),r.once&&(delete r.once,n=Pr(\"~\",n,a)),r.passive&&(delete r.passive,n=Pr(\"&\",n,a)),r.native?(delete r.native,l=e.nativeEvents||(e.nativeEvents={})):l=e.events||(e.events={});const u=Rr({value:o.trim(),dynamic:a},c);r!==t&&(u.modifiers=r);const f=l[n];Array.isArray(f)?s?f.unshift(u):f.push(u):l[n]=f?s?[u,f]:[f,u]:u,e.plain=!1}function Mr(t,e,n){const o=Ir(t,\":\"+e)||Ir(t,\"v-bind:\"+e);if(null!=o)return kr(o);if(!1!==n){const n=Ir(t,e);if(null!=n)return JSON.stringify(n)}}function Ir(t,e,n){let o;if(null!=(o=t.attrsMap[e])){const n=t.attrsList;for(let t=0,o=n.length;t-1?{exp:t.slice(0,Vr),key:'\"'+t.slice(Vr+1)+'\"'}:{exp:t,key:null};Ur=t,Vr=Kr=Jr=0;for(;!Wr();)zr=qr(),Zr(zr)?Xr(zr):91===zr&&Gr(zr);return{exp:t.slice(0,Kr),key:t.slice(Kr+1,Jr)}}(t);return null===n.key?`${t}=${e}`:`$set(${n.exp}, ${n.key}, ${e})`}let Br,Ur,zr,Vr,Kr,Jr;function qr(){return Ur.charCodeAt(++Vr)}function Wr(){return Vr>=Br}function Zr(t){return 34===t||39===t}function Gr(t){let e=1;for(Kr=Vr;!Wr();)if(Zr(t=qr()))Xr(t);else if(91===t&&e++,93===t&&e--,0===e){Jr=Vr;break}}function Xr(t){const e=t;for(;!Wr()&&(t=qr())!==e;);}const Yr=\"__r\",Qr=\"__c\";let ts;function es(t,e,n){const o=ts;return function r(){null!==e.apply(null,arguments)&&rs(t,r,n,o)}}const ns=$n&&!(Q&&Number(Q[1])<=53);function os(t,e,n,o){if(ns){const t=nn,n=e;e=n._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=t||e.timeStamp<=0||e.target.ownerDocument!==document)return n.apply(this,arguments)}}ts.addEventListener(t,e,nt?{capture:n,passive:o}:n)}function rs(t,e,n,o){(o||ts).removeEventListener(t,e._wrapper||e,n)}function ss(t,e){if(n(t.data.on)&&n(e.data.on))return;const r=e.data.on||{},s=t.data.on||{};ts=e.elm||t.elm,function(t){if(o(t[Yr])){const e=Z?\"change\":\"input\";t[e]=[].concat(t[Yr],t[e]||[]),delete t[Yr]}o(t[Qr])&&(t.change=[].concat(t[Qr],t.change||[]),delete t[Qr])}(r),Xt(r,s,os,rs,es,e.context),ts=void 0}var is={create:ss,update:ss,destroy:t=>ss(t,cr)};let cs;function as(t,e){if(n(t.data.domProps)&&n(e.data.domProps))return;let s,i;const c=e.elm,a=t.data.domProps||{};let l=e.data.domProps||{};for(s in(o(l.__ob__)||r(l._v_attr_proxy))&&(l=e.data.domProps=A({},l)),a)s in l||(c[s]=\"\");for(s in l){if(i=l[s],\"textContent\"===s||\"innerHTML\"===s){if(e.children&&(e.children.length=0),i===a[s])continue;1===c.childNodes.length&&c.removeChild(c.childNodes[0])}if(\"value\"===s&&\"PROGRESS\"!==c.tagName){c._value=i;const t=n(i)?\"\":String(i);ls(c,t)&&(c.value=t)}else if(\"innerHTML\"===s&&Xo(c.tagName)&&n(c.innerHTML)){cs=cs||document.createElement(\"div\"),cs.innerHTML=`${i}`;const t=cs.firstChild;for(;c.firstChild;)c.removeChild(c.firstChild);for(;t.firstChild;)c.appendChild(t.firstChild)}else if(i!==a[s])try{c[s]=i}catch(t){}}}function ls(t,e){return!t.composing&&(\"OPTION\"===t.tagName||function(t,e){let n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){const n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return h(n)!==h(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var us={create:as,update:as};const fs=b((function(t){const e={},n=/:(.+)/;return t.split(/;(?![^(]*\\))/g).forEach((function(t){if(t){const o=t.split(n);o.length>1&&(e[o[0].trim()]=o[1].trim())}})),e}));function ds(t){const e=ps(t.style);return t.staticStyle?A(t.staticStyle,e):e}function ps(t){return Array.isArray(t)?j(t):\"string\"==typeof t?fs(t):t}const hs=/^--/,ms=/\\s*!important$/,gs=(t,e,n)=>{if(hs.test(e))t.style.setProperty(e,n);else if(ms.test(n))t.style.setProperty(S(e),n.replace(ms,\"\"),\"important\");else{const o=_s(e);if(Array.isArray(n))for(let e=0,r=n.length;e-1?e.split(ws).forEach((e=>t.classList.add(e))):t.classList.add(e);else{const n=` ${t.getAttribute(\"class\")||\"\"} `;n.indexOf(\" \"+e+\" \")<0&&t.setAttribute(\"class\",(n+e).trim())}}function Cs(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(\" \")>-1?e.split(ws).forEach((e=>t.classList.remove(e))):t.classList.remove(e),t.classList.length||t.removeAttribute(\"class\");else{let n=` ${t.getAttribute(\"class\")||\"\"} `;const o=\" \"+e+\" \";for(;n.indexOf(o)>=0;)n=n.replace(o,\" \");n=n.trim(),n?t.setAttribute(\"class\",n):t.removeAttribute(\"class\")}}function ks(t){if(t){if(\"object\"==typeof t){const e={};return!1!==t.css&&A(e,Ss(t.name||\"v\")),A(e,t),e}return\"string\"==typeof t?Ss(t):void 0}}const Ss=b((t=>({enterClass:`${t}-enter`,enterToClass:`${t}-enter-to`,enterActiveClass:`${t}-enter-active`,leaveClass:`${t}-leave`,leaveToClass:`${t}-leave-to`,leaveActiveClass:`${t}-leave-active`}))),Os=q&&!G,Ts=\"transition\",As=\"animation\";let js=\"transition\",Es=\"transitionend\",Ns=\"animation\",Ps=\"animationend\";Os&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(js=\"WebkitTransition\",Es=\"webkitTransitionEnd\"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ns=\"WebkitAnimation\",Ps=\"webkitAnimationEnd\"));const Ds=q?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:t=>t();function Ms(t){Ds((()=>{Ds(t)}))}function Is(t,e){const n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),xs(t,e))}function Ls(t,e){t._transitionClasses&&y(t._transitionClasses,e),Cs(t,e)}function Rs(t,e,n){const{type:o,timeout:r,propCount:s}=Hs(t,e);if(!o)return n();const i=o===Ts?Es:Ps;let c=0;const a=()=>{t.removeEventListener(i,l),n()},l=e=>{e.target===t&&++c>=s&&a()};setTimeout((()=>{c0&&(l=Ts,u=s,f=r.length):e===As?a>0&&(l=As,u=a,f=c.length):(u=Math.max(s,a),l=u>0?s>a?Ts:As:null,f=l?l===Ts?r.length:c.length:0);return{type:l,timeout:u,propCount:f,hasTransform:l===Ts&&Fs.test(n[js+\"Property\"])}}function Bs(t,e){for(;t.lengthUs(e)+Us(t[n]))))}function Us(t){return 1e3*Number(t.slice(0,-1).replace(\",\",\".\"))}function zs(t,e){const r=t.elm;o(r._leaveCb)&&(r._leaveCb.cancelled=!0,r._leaveCb());const s=ks(t.data.transition);if(n(s))return;if(o(r._enterCb)||1!==r.nodeType)return;const{css:a,type:l,enterClass:u,enterToClass:f,enterActiveClass:d,appearClass:p,appearToClass:m,appearActiveClass:g,beforeEnter:v,enter:y,afterEnter:_,enterCancelled:$,beforeAppear:b,appear:w,afterAppear:x,appearCancelled:C,duration:k}=s;let S=Ve,O=Ve.$vnode;for(;O&&O.parent;)S=O.context,O=O.parent;const T=!S._isMounted||!t.isRootInsert;if(T&&!w&&\"\"!==w)return;const A=T&&p?p:u,j=T&&g?g:d,E=T&&m?m:f,N=T&&b||v,P=T&&i(w)?w:y,D=T&&x||_,M=T&&C||$,L=h(c(k)?k.enter:k),R=!1!==a&&!G,F=Js(P),H=r._enterCb=I((()=>{R&&(Ls(r,E),Ls(r,j)),H.cancelled?(R&&Ls(r,A),M&&M(r)):D&&D(r),r._enterCb=null}));t.data.show||Yt(t,\"insert\",(()=>{const e=r.parentNode,n=e&&e._pending&&e._pending[t.key];n&&n.tag===t.tag&&n.elm._leaveCb&&n.elm._leaveCb(),P&&P(r,H)})),N&&N(r),R&&(Is(r,A),Is(r,j),Ms((()=>{Ls(r,A),H.cancelled||(Is(r,E),F||(Ks(L)?setTimeout(H,L):Rs(r,l,H)))}))),t.data.show&&(e&&e(),P&&P(r,H)),R||F||H()}function Vs(t,e){const r=t.elm;o(r._enterCb)&&(r._enterCb.cancelled=!0,r._enterCb());const s=ks(t.data.transition);if(n(s)||1!==r.nodeType)return e();if(o(r._leaveCb))return;const{css:i,type:a,leaveClass:l,leaveToClass:u,leaveActiveClass:f,beforeLeave:d,leave:p,afterLeave:m,leaveCancelled:g,delayLeave:v,duration:y}=s,_=!1!==i&&!G,$=Js(p),b=h(c(y)?y.leave:y),w=r._leaveCb=I((()=>{r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[t.key]=null),_&&(Ls(r,u),Ls(r,f)),w.cancelled?(_&&Ls(r,l),g&&g(r)):(e(),m&&m(r)),r._leaveCb=null}));function x(){w.cancelled||(!t.data.show&&r.parentNode&&((r.parentNode._pending||(r.parentNode._pending={}))[t.key]=t),d&&d(r),_&&(Is(r,l),Is(r,f),Ms((()=>{Ls(r,l),w.cancelled||(Is(r,u),$||(Ks(b)?setTimeout(w,b):Rs(r,a,w)))}))),p&&p(r,w),_||$||w())}v?v(x):x()}function Ks(t){return\"number\"==typeof t&&!isNaN(t)}function Js(t){if(n(t))return!1;const e=t.fns;return o(e)?Js(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function qs(t,e){!0!==e.data.show&&zs(e)}const Ws=function(t){let i,c;const a={},{modules:l,nodeOps:u}=t;for(i=0;im?(f=n(r[y+1])?null:r[y+1].elm,$(t,f,r,h,y,s)):h>y&&w(e,p,m)}(f,m,g,s,l):o(g)?(o(t.text)&&u.setTextContent(f,\"\"),$(f,null,g,0,g.length-1,s)):o(m)?w(m,0,m.length-1):o(t.text)&&u.setTextContent(f,\"\"):t.text!==e.text&&u.setTextContent(f,e.text),o(h)&&o(p=h.hook)&&o(p=p.postpatch)&&p(t,e)}function S(t,e,n){if(r(n)&&o(t.parent))t.parent.data.pendingInsert=e;else for(let t=0;t{const t=document.activeElement;t&&t.vmodel&&ni(t,\"input\")}));const Zs={inserted(t,e,n,o){\"select\"===n.tag?(o.elm&&!o.elm._vOptions?Yt(n,\"postpatch\",(()=>{Zs.componentUpdated(t,e,n)})):Gs(t,e,n.context),t._vOptions=[].map.call(t.options,Qs)):(\"textarea\"===n.tag||er(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener(\"compositionstart\",ti),t.addEventListener(\"compositionend\",ei),t.addEventListener(\"change\",ei),G&&(t.vmodel=!0)))},componentUpdated(t,e,n){if(\"select\"===n.tag){Gs(t,e,n.context);const o=t._vOptions,r=t._vOptions=[].map.call(t.options,Qs);if(r.some(((t,e)=>!D(t,o[e])))){(t.multiple?e.value.some((t=>Ys(t,r))):e.value!==e.oldValue&&Ys(e.value,r))&&ni(t,\"change\")}}}};function Gs(t,e,n){Xs(t,e),(Z||X)&&setTimeout((()=>{Xs(t,e)}),0)}function Xs(t,e,n){const o=e.value,r=t.multiple;if(r&&!Array.isArray(o))return;let s,i;for(let e=0,n=t.options.length;e-1,i.selected!==s&&(i.selected=s);else if(D(Qs(i),o))return void(t.selectedIndex!==e&&(t.selectedIndex=e));r||(t.selectedIndex=-1)}function Ys(t,e){return e.every((e=>!D(e,t)))}function Qs(t){return\"_value\"in t?t._value:t.value}function ti(t){t.target.composing=!0}function ei(t){t.target.composing&&(t.target.composing=!1,ni(t.target,\"input\"))}function ni(t,e){const n=document.createEvent(\"HTMLEvents\");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function oi(t){return!t.componentInstance||t.data&&t.data.transition?t:oi(t.componentInstance._vnode)}var ri={bind(t,{value:e},n){const o=(n=oi(n)).data&&n.data.transition,r=t.__vOriginalDisplay=\"none\"===t.style.display?\"\":t.style.display;e&&o?(n.data.show=!0,zs(n,(()=>{t.style.display=r}))):t.style.display=e?r:\"none\"},update(t,{value:e,oldValue:n},o){if(!e==!n)return;(o=oi(o)).data&&o.data.transition?(o.data.show=!0,e?zs(o,(()=>{t.style.display=t.__vOriginalDisplay})):Vs(o,(()=>{t.style.display=\"none\"}))):t.style.display=e?t.__vOriginalDisplay:\"none\"},unbind(t,e,n,o,r){r||(t.style.display=t.__vOriginalDisplay)}},si={model:Zs,show:ri};const ii={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function ci(t){const e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?ci(Le(e.children)):t}function ai(t){const e={},n=t.$options;for(const o in n.propsData)e[o]=t[o];const o=n._parentListeners;for(const t in o)e[x(t)]=o[t];return e}function li(t,e){if(/\\d-keep-alive$/.test(e.tag))return t(\"keep-alive\",{props:e.componentOptions.propsData})}const ui=t=>t.tag||Ce(t),fi=t=>\"show\"===t.name;var di={name:\"transition\",props:ii,abstract:!0,render(t){let e=this.$slots.default;if(!e)return;if(e=e.filter(ui),!e.length)return;const n=this.mode,o=e[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;const r=ci(o);if(!r)return o;if(this._leaving)return li(t,o);const i=`__transition-${this._uid}-`;r.key=null==r.key?r.isComment?i+\"comment\":i+r.tag:s(r.key)?0===String(r.key).indexOf(i)?r.key:i+r.key:r.key;const c=(r.data||(r.data={})).transition=ai(this),a=this._vnode,l=ci(a);if(r.data.directives&&r.data.directives.some(fi)&&(r.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(r,l)&&!Ce(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){const e=l.data.transition=A({},c);if(\"out-in\"===n)return this._leaving=!0,Yt(e,\"afterLeave\",(()=>{this._leaving=!1,this.$forceUpdate()})),li(t,o);if(\"in-out\"===n){if(Ce(r))return a;let t;const n=()=>{t()};Yt(c,\"afterEnter\",n),Yt(c,\"enterCancelled\",n),Yt(e,\"delayLeave\",(e=>{t=e}))}}return o}};const pi=A({tag:String,moveClass:String},ii);delete pi.mode;var hi={props:pi,beforeMount(){const t=this._update;this._update=(e,n)=>{const o=Ke(this);this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept,o(),t.call(this,e,n)}},render(t){const e=this.tag||this.$vnode.data.tag||\"span\",n=Object.create(null),o=this.prevChildren=this.children,r=this.$slots.default||[],s=this.children=[],i=ai(this);for(let t=0;t{if(t.data.moved){const n=t.elm,o=n.style;Is(n,e),o.transform=o.WebkitTransform=o.transitionDuration=\"\",n.addEventListener(Es,n._moveCb=function t(o){o&&o.target!==n||o&&!/transform$/.test(o.propertyName)||(n.removeEventListener(Es,t),n._moveCb=null,Ls(n,e))})}})))},methods:{hasMove(t,e){if(!Os)return!1;if(this._hasMove)return this._hasMove;const n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach((t=>{Cs(n,t)})),xs(n,e),n.style.display=\"none\",this.$el.appendChild(n);const o=Hs(n);return this.$el.removeChild(n),this._hasMove=o.hasTransform}}};function mi(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function gi(t){t.data.newPos=t.elm.getBoundingClientRect()}function vi(t){const e=t.data.pos,n=t.data.newPos,o=e.left-n.left,r=e.top-n.top;if(o||r){t.data.moved=!0;const e=t.elm.style;e.transform=e.WebkitTransform=`translate(${o}px,${r}px)`,e.transitionDuration=\"0s\"}}var yi={Transition:di,TransitionGroup:hi};So.config.mustUseProp=Io,So.config.isReservedTag=Yo,So.config.isReservedAttr=Do,So.config.getTagNamespace=Qo,So.config.isUnknownElement=function(t){if(!q)return!0;if(Yo(t))return!1;if(t=t.toLowerCase(),null!=tr[t])return tr[t];const e=document.createElement(t);return t.indexOf(\"-\")>-1?tr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:tr[t]=/HTMLUnknownElement/.test(e.toString())},A(So.options.directives,si),A(So.options.components,yi),So.prototype.__patch__=q?Ws:E,So.prototype.$mount=function(t,e){return function(t,e,n){let o;t.$el=e,t.$options.render||(t.$options.render=ft),Ze(t,\"beforeMount\"),o=()=>{t._update(t._render(),n)},new Kn(t,o,E,{before(){t._isMounted&&!t._isDestroyed&&Ze(t,\"beforeUpdate\")}},!0),n=!1;const r=t._preWatchers;if(r)for(let t=0;t{B.devtools&&rt&&rt.emit(\"init\",So)}),0);const _i=/\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g,$i=/[-.*+?^${}()|[\\]\\/\\\\]/g,bi=b((t=>{const e=t[0].replace($i,\"\\\\$&\"),n=t[1].replace($i,\"\\\\$&\");return new RegExp(e+\"((?:.|\\\\n)+?)\"+n,\"g\")}));var wi={staticKeys:[\"staticClass\"],transformNode:function(t,e){e.warn;const n=Ir(t,\"class\");n&&(t.staticClass=JSON.stringify(n.replace(/\\s+/g,\" \").trim()));const o=Mr(t,\"class\",!1);o&&(t.classBinding=o)},genData:function(t){let e=\"\";return t.staticClass&&(e+=`staticClass:${t.staticClass},`),t.classBinding&&(e+=`class:${t.classBinding},`),e}};var xi={staticKeys:[\"staticStyle\"],transformNode:function(t,e){e.warn;const n=Ir(t,\"style\");n&&(t.staticStyle=JSON.stringify(fs(n)));const o=Mr(t,\"style\",!1);o&&(t.styleBinding=o)},genData:function(t){let e=\"\";return t.staticStyle&&(e+=`staticStyle:${t.staticStyle},`),t.styleBinding&&(e+=`style:(${t.styleBinding}),`),e}};let Ci;var ki={decode:t=>(Ci=Ci||document.createElement(\"div\"),Ci.innerHTML=t,Ci.textContent)};const Si=m(\"area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr\"),Oi=m(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source\"),Ti=m(\"address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track\"),Ai=/^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,ji=/^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+?\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/,Ei=`[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z${U.source}]*`,Ni=`((?:${Ei}\\\\:)?${Ei})`,Pi=new RegExp(`^<${Ni}`),Di=/^\\s*(\\/?)>/,Mi=new RegExp(`^<\\\\/${Ni}[^>]*>`),Ii=/^]+>/i,Li=/^\",\""\":'\"',\"&\":\"&\",\" \":\"\\n\",\" \":\"\\t\",\"'\":\"'\"},Ui=/&(?:lt|gt|quot|amp|#39);/g,zi=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Vi=m(\"pre,textarea\",!0),Ki=(t,e)=>t&&Vi(t)&&\"\\n\"===e[0];function Ji(t,e){const n=e?zi:Ui;return t.replace(n,(t=>Bi[t]))}const qi=/^@|^v-on:/,Wi=/^v-|^@|^:|^#/,Zi=/([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/,Gi=/,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/,Xi=/^\\(|\\)$/g,Yi=/^\\[.*\\]$/,Qi=/:(.*)$/,tc=/^:|^\\.|^v-bind:/,ec=/\\.[^.\\]]+(?=[^\\]]*$)/g,nc=/^v-slot(:|$)|^#/,oc=/[\\r\\n]/,rc=/[ \\f\\t\\r\\n]+/g,sc=b(ki.decode),ic=\"_empty_\";let cc,ac,lc,uc,fc,dc,pc,hc;function mc(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:wc(e),rawAttrsMap:{},parent:n,children:[]}}function gc(t,e){cc=e.warn||Or,dc=e.isPreTag||N,pc=e.mustUseProp||N,hc=e.getTagNamespace||N,e.isReservedTag,lc=Tr(e.modules,\"transformNode\"),uc=Tr(e.modules,\"preTransformNode\"),fc=Tr(e.modules,\"postTransformNode\"),ac=e.delimiters;const n=[],o=!1!==e.preserveWhitespace,r=e.whitespace;let s,i,c=!1,a=!1;function l(t){if(u(t),c||t.processed||(t=vc(t,e)),n.length||t===s||s.if&&(t.elseif||t.else)&&_c(s,{exp:t.elseif,block:t}),i&&!t.forbidden)if(t.elseif||t.else)!function(t,e){const n=function(t){let e=t.length;for(;e--;){if(1===t[e].type)return t[e];t.pop()}}(e.children);n&&n.if&&_c(n,{exp:t.elseif,block:t})}(t,i);else{if(t.slotScope){const e=t.slotTarget||'\"default\"';(i.scopedSlots||(i.scopedSlots={}))[e]=t}i.children.push(t),t.parent=i}t.children=t.children.filter((t=>!t.slotScope)),u(t),t.pre&&(c=!1),dc(t.tag)&&(a=!1);for(let n=0;n]*>)\",\"i\")),s=t.replace(r,(function(t,r,s){return n=s.length,Fi(o)||\"noscript\"===o||(r=r.replace(//g,\"$1\").replace(//g,\"$1\")),Ki(o,r)&&(r=r.slice(1)),e.chars&&e.chars(r),\"\"}));a+=t.length-s.length,t=s,d(o,a-n,a)}else{let n,o,r,s=t.indexOf(\"<\");if(0===s){if(Li.test(t)){const n=t.indexOf(\"--\\x3e\");if(n>=0){e.shouldKeepComment&&e.comment&&e.comment(t.substring(4,n),a,a+n+3),l(n+3);continue}}if(Ri.test(t)){const e=t.indexOf(\"]>\");if(e>=0){l(e+2);continue}}const n=t.match(Ii);if(n){l(n[0].length);continue}const o=t.match(Mi);if(o){const t=a;l(o[0].length),d(o[1],t,a);continue}const r=u();if(r){f(r),Ki(r.tagName,t)&&l(1);continue}}if(s>=0){for(o=t.slice(s);!(Mi.test(o)||Pi.test(o)||Li.test(o)||Ri.test(o)||(r=o.indexOf(\"<\",1),r<0));)s+=r,o=t.slice(s);n=t.substring(0,s)}s<0&&(n=t),n&&l(n.length),e.chars&&n&&e.chars(n,a-n.length,a)}if(t===i){e.chars&&e.chars(t);break}}function l(e){a+=e,t=t.substring(e)}function u(){const e=t.match(Pi);if(e){const n={tagName:e[1],attrs:[],start:a};let o,r;for(l(e[0].length);!(o=t.match(Di))&&(r=t.match(ji)||t.match(Ai));)r.start=a,l(r[0].length),r.end=a,n.attrs.push(r);if(o)return n.unarySlash=o[1],l(o[0].length),n.end=a,n}}function f(t){const i=t.tagName,a=t.unarySlash;o&&(\"p\"===c&&Ti(i)&&d(c),s(i)&&c===i&&d(i));const l=r(i)||!!a,u=t.attrs.length,f=new Array(u);for(let n=0;n=0&&n[s].lowerCasedTag!==i;s--);else s=0;if(s>=0){for(let t=n.length-1;t>=s;t--)e.end&&e.end(n[t].tag,o,r);n.length=s,c=s&&n[s-1].tag}else\"br\"===i?e.start&&e.start(t,[],!0,o,r):\"p\"===i&&(e.start&&e.start(t,[],!1,o,r),e.end&&e.end(t,o,r))}d()}(t,{warn:cc,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start(t,o,r,u,f){const d=i&&i.ns||hc(t);Z&&\"svg\"===d&&(o=function(t){const e=[];for(let n=0;na&&(r.push(c=t.slice(a,i)),o.push(JSON.stringify(c)));const e=kr(s[1].trim());o.push(`_s(${e})`),r.push({\"@binding\":e}),a=i+s[0].length}return a{if(!t.slotScope)return t.parent=s,!0})),s.slotScope=e.value||ic,t.children=[],t.plain=!1}}}(t),\"slot\"===(n=t).tag&&(n.slotName=Mr(n,\"name\")),function(t){let e;(e=Mr(t,\"is\"))&&(t.component=e);null!=Ir(t,\"inline-template\")&&(t.inlineTemplate=!0)}(t);for(let n=0;n{t[e.slice(1)]=!0})),t}}function wc(t){const e={};for(let n=0,o=t.length;n-1`+(\"true\"===s?`:(${e})`:`:_q(${e},${s})`)),Dr(t,\"change\",`var $$a=${e},$$el=$event.target,$$c=$$el.checked?(${s}):(${i});if(Array.isArray($$a)){var $$v=${o?\"_n(\"+r+\")\":r},$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(${Hr(e,\"$$a.concat([$$v])\")})}else{$$i>-1&&(${Hr(e,\"$$a.slice(0,$$i).concat($$a.slice($$i+1))\")})}}else{${Hr(e,\"$$c\")}}`,null,!0)}(t,o,r);else if(\"input\"===s&&\"radio\"===i)!function(t,e,n){const o=n&&n.number;let r=Mr(t,\"value\")||\"null\";r=o?`_n(${r})`:r,Ar(t,\"checked\",`_q(${e},${r})`),Dr(t,\"change\",Hr(e,r),null,!0)}(t,o,r);else if(\"input\"===s||\"textarea\"===s)!function(t,e,n){const o=t.attrsMap.type,{lazy:r,number:s,trim:i}=n||{},c=!r&&\"range\"!==o,a=r?\"change\":\"range\"===o?Yr:\"input\";let l=\"$event.target.value\";i&&(l=\"$event.target.value.trim()\");s&&(l=`_n(${l})`);let u=Hr(e,l);c&&(u=`if($event.target.composing)return;${u}`);Ar(t,\"value\",`(${e})`),Dr(t,a,u,null,!0),(i||s)&&Dr(t,\"blur\",\"$forceUpdate()\")}(t,o,r);else if(!B.isReservedTag(s))return Fr(t,o,r),!1;return!0},text:function(t,e){e.value&&Ar(t,\"textContent\",`_s(${e.value})`,e)},html:function(t,e){e.value&&Ar(t,\"innerHTML\",`_s(${e.value})`,e)}},isPreTag:t=>\"pre\"===t,isUnaryTag:Si,mustUseProp:Io,canBeLeftOpenTag:Oi,isReservedTag:Yo,getTagNamespace:Qo,staticKeys:function(t){return t.reduce(((t,e)=>t.concat(e.staticKeys||[])),[]).join(\",\")}(Sc)};let Tc,Ac;const jc=b((function(t){return m(\"type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap\"+(t?\",\"+t:\"\"))}));function Ec(t,e){t&&(Tc=jc(e.staticKeys||\"\"),Ac=e.isReservedTag||N,Nc(t),Pc(t,!1))}function Nc(t){if(t.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||g(t.tag)||!Ac(t.tag)||function(t){for(;t.parent;){if(\"template\"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Tc)))}(t),1===t.type){if(!Ac(t.tag)&&\"slot\"!==t.tag&&null==t.attrsMap[\"inline-template\"])return;for(let e=0,n=t.children.length;e|^function(?:\\s+[\\w$]+)?\\s*\\(/,Mc=/\\([^)]*?\\);*$/,Ic=/^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/,Lc={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Rc={esc:[\"Esc\",\"Escape\"],tab:\"Tab\",enter:\"Enter\",space:[\" \",\"Spacebar\"],up:[\"Up\",\"ArrowUp\"],left:[\"Left\",\"ArrowLeft\"],right:[\"Right\",\"ArrowRight\"],down:[\"Down\",\"ArrowDown\"],delete:[\"Backspace\",\"Delete\",\"Del\"]},Fc=t=>`if(${t})return null;`,Hc={stop:\"$event.stopPropagation();\",prevent:\"$event.preventDefault();\",self:Fc(\"$event.target !== $event.currentTarget\"),ctrl:Fc(\"!$event.ctrlKey\"),shift:Fc(\"!$event.shiftKey\"),alt:Fc(\"!$event.altKey\"),meta:Fc(\"!$event.metaKey\"),left:Fc(\"'button' in $event && $event.button !== 0\"),middle:Fc(\"'button' in $event && $event.button !== 1\"),right:Fc(\"'button' in $event && $event.button !== 2\")};function Bc(t,e){const n=e?\"nativeOn:\":\"on:\";let o=\"\",r=\"\";for(const e in t){const n=Uc(t[e]);t[e]&&t[e].dynamic?r+=`${e},${n},`:o+=`\"${e}\":${n},`}return o=`{${o.slice(0,-1)}}`,r?n+`_d(${o},[${r.slice(0,-1)}])`:n+o}function Uc(t){if(!t)return\"function(){}\";if(Array.isArray(t))return`[${t.map((t=>Uc(t))).join(\",\")}]`;const e=Ic.test(t.value),n=Dc.test(t.value),o=Ic.test(t.value.replace(Mc,\"\"));if(t.modifiers){let r=\"\",s=\"\";const i=[];for(const e in t.modifiers)if(Hc[e])s+=Hc[e],Lc[e]&&i.push(e);else if(\"exact\"===e){const e=t.modifiers;s+=Fc([\"ctrl\",\"shift\",\"alt\",\"meta\"].filter((t=>!e[t])).map((t=>`$event.${t}Key`)).join(\"||\"))}else i.push(e);i.length&&(r+=function(t){return`if(!$event.type.indexOf('key')&&${t.map(zc).join(\"&&\")})return null;`}(i)),s&&(r+=s);return`function($event){${r}${e?`return ${t.value}.apply(null, arguments)`:n?`return (${t.value}).apply(null, arguments)`:o?`return ${t.value}`:t.value}}`}return e||n?t.value:`function($event){${o?`return ${t.value}`:t.value}}`}function zc(t){const e=parseInt(t,10);if(e)return`$event.keyCode!==${e}`;const n=Lc[t],o=Rc[t];return`_k($event.keyCode,${JSON.stringify(t)},${JSON.stringify(n)},$event.key,${JSON.stringify(o)})`}var Vc={on:function(t,e){t.wrapListeners=t=>`_g(${t},${e.value})`},bind:function(t,e){t.wrapData=n=>`_b(${n},'${t.tag}',${e.value},${e.modifiers&&e.modifiers.prop?\"true\":\"false\"}${e.modifiers&&e.modifiers.sync?\",true\":\"\"})`},cloak:E};class Kc{constructor(t){this.options=t,this.warn=t.warn||Or,this.transforms=Tr(t.modules,\"transformCode\"),this.dataGenFns=Tr(t.modules,\"genData\"),this.directives=A(A({},Vc),t.directives);const e=t.isReservedTag||N;this.maybeComponent=t=>!!t.component||!e(t.tag),this.onceId=0,this.staticRenderFns=[],this.pre=!1}}function Jc(t,e){const n=new Kc(e);return{render:`with(this){return ${t?\"script\"===t.tag?\"null\":qc(t,n):'_c(\"div\")'}}`,staticRenderFns:n.staticRenderFns}}function qc(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Wc(t,e);if(t.once&&!t.onceProcessed)return Zc(t,e);if(t.for&&!t.forProcessed)return Yc(t,e);if(t.if&&!t.ifProcessed)return Gc(t,e);if(\"template\"!==t.tag||t.slotTarget||e.pre){if(\"slot\"===t.tag)return function(t,e){const n=t.slotName||'\"default\"',o=na(t,e);let r=`_t(${n}${o?`,function(){return ${o}}`:\"\"}`;const s=t.attrs||t.dynamicAttrs?sa((t.attrs||[]).concat(t.dynamicAttrs||[]).map((t=>({name:x(t.name),value:t.value,dynamic:t.dynamic})))):null,i=t.attrsMap[\"v-bind\"];!s&&!i||o||(r+=\",null\");s&&(r+=`,${s}`);i&&(r+=`${s?\"\":\",null\"},${i}`);return r+\")\"}(t,e);{let n;if(t.component)n=function(t,e,n){const o=e.inlineTemplate?null:na(e,n,!0);return`_c(${t},${Qc(e,n)}${o?`,${o}`:\"\"})`}(t.component,t,e);else{let o;const r=e.maybeComponent(t);let s;(!t.plain||t.pre&&r)&&(o=Qc(t,e));const i=e.options.bindings;r&&i&&!1!==i.__isScriptSetup&&(s=function(t,e){const n=x(e),o=C(n),r=r=>t[e]===r?e:t[n]===r?n:t[o]===r?o:void 0,s=r(\"setup-const\")||r(\"setup-reactive-const\");if(s)return s;const i=r(\"setup-let\")||r(\"setup-ref\")||r(\"setup-maybe-ref\");if(i)return i}(i,t.tag)),s||(s=`'${t.tag}'`);const c=t.inlineTemplate?null:na(t,e,!0);n=`_c(${s}${o?`,${o}`:\"\"}${c?`,${c}`:\"\"})`}for(let o=0;o{const n=e[t];return n.slotTargetDynamic||n.if||n.for||ta(n)})),r=!!t.if;if(!o){let e=t.parent;for(;e;){if(e.slotScope&&e.slotScope!==ic||e.for){o=!0;break}e.if&&(r=!0),e=e.parent}}const s=Object.keys(e).map((t=>ea(e[t],n))).join(\",\");return`scopedSlots:_u([${s}]${o?\",null,true\":\"\"}${!o&&r?`,null,false,${function(t){let e=5381,n=t.length;for(;n;)e=33*e^t.charCodeAt(--n);return e>>>0}(s)}`:\"\"})`}(t,t.scopedSlots,e)},`),t.model&&(n+=`model:{value:${t.model.value},callback:${t.model.callback},expression:${t.model.expression}},`),t.inlineTemplate){const o=function(t,e){const n=t.children[0];if(n&&1===n.type){const t=Jc(n,e.options);return`inlineTemplate:{render:function(){${t.render}},staticRenderFns:[${t.staticRenderFns.map((t=>`function(){${t}}`)).join(\",\")}]}`}}(t,e);o&&(n+=`${o},`)}return n=n.replace(/,$/,\"\")+\"}\",t.dynamicAttrs&&(n=`_b(${n},\"${t.tag}\",${sa(t.dynamicAttrs)})`),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function ta(t){return 1===t.type&&(\"slot\"===t.tag||t.children.some(ta))}function ea(t,e){const n=t.attrsMap[\"slot-scope\"];if(t.if&&!t.ifProcessed&&!n)return Gc(t,e,ea,\"null\");if(t.for&&!t.forProcessed)return Yc(t,e,ea);const o=t.slotScope===ic?\"\":String(t.slotScope),r=`function(${o}){return ${\"template\"===t.tag?t.if&&n?`(${t.if})?${na(t,e)||\"undefined\"}:undefined`:na(t,e)||\"undefined\":qc(t,e)}}`,s=o?\"\":\",proxy:true\";return`{key:${t.slotTarget||'\"default\"'},fn:${r}${s}}`}function na(t,e,n,o,r){const s=t.children;if(s.length){const t=s[0];if(1===s.length&&t.for&&\"template\"!==t.tag&&\"slot\"!==t.tag){const r=n?e.maybeComponent(t)?\",1\":\",0\":\"\";return`${(o||qc)(t,e)}${r}`}const i=n?function(t,e){let n=0;for(let o=0;ooa(t.block)))){n=2;break}(e(r)||r.ifConditions&&r.ifConditions.some((t=>e(t.block))))&&(n=1)}}return n}(s,e.maybeComponent):0,c=r||ra;return`[${s.map((t=>c(t,e))).join(\",\")}]${i?`,${i}`:\"\"}`}}function oa(t){return void 0!==t.for||\"template\"===t.tag||\"slot\"===t.tag}function ra(t,e){return 1===t.type?qc(t,e):3===t.type&&t.isComment?function(t){return`_e(${JSON.stringify(t.text)})`}(t):function(t){return`_v(${2===t.type?t.expression:ia(JSON.stringify(t.text))})`}(t)}function sa(t){let e=\"\",n=\"\";for(let o=0;oca(t,a))),e[s]=c}}new RegExp(\"\\\\b\"+\"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments\".split(\",\").join(\"\\\\b|\\\\b\")+\"\\\\b\"),new RegExp(\"\\\\b\"+\"delete,typeof,void\".split(\",\").join(\"\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b\")+\"\\\\s*\\\\([^\\\\)]*\\\\)\");const la=(ua=function(t,e){const n=gc(t.trim(),e);!1!==e.optimize&&Ec(n,e);const o=Jc(n,e);return{ast:n,render:o.render,staticRenderFns:o.staticRenderFns}},function(t){function e(e,n){const o=Object.create(t),r=[],s=[];if(n){n.modules&&(o.modules=(t.modules||[]).concat(n.modules)),n.directives&&(o.directives=A(Object.create(t.directives||null),n.directives));for(const t in n)\"modules\"!==t&&\"directives\"!==t&&(o[t]=n[t])}o.warn=(t,e,n)=>{(n?s:r).push(t)};const i=ua(e.trim(),o);return i.errors=r,i.tips=s,i}return{compile:e,compileToFunctions:aa(e)}});var ua;const{compile:fa,compileToFunctions:da}=la(Oc);let pa;function ha(t){return pa=pa||document.createElement(\"div\"),pa.innerHTML=t?'':'
',pa.innerHTML.indexOf(\" \")>0}const ma=!!q&&ha(!1),ga=!!q&&ha(!0),va=b((t=>{const e=nr(t);return e&&e.innerHTML})),ya=So.prototype.$mount;So.prototype.$mount=function(t,e){if((t=t&&nr(t))===document.body||t===document.documentElement)return this;const n=this.$options;if(!n.render){let e=n.template;if(e)if(\"string\"==typeof e)\"#\"===e.charAt(0)&&(e=va(e));else{if(!e.nodeType)return this;e=e.innerHTML}else t&&(e=function(t){if(t.outerHTML)return t.outerHTML;{const e=document.createElement(\"div\");return e.appendChild(t.cloneNode(!0)),e.innerHTML}}(t));if(e){const{render:t,staticRenderFns:o}=da(e,{outputSourceRange:!1,shouldDecodeNewlines:ma,shouldDecodeNewlinesForHref:ga,delimiters:n.delimiters,comments:n.comments},this);n.render=t,n.staticRenderFns=o}}return ya.call(this,t,e)},So.compile=da,A(So,Hn),So.effect=function(t,e){const n=new Kn(at,t,E,{sync:!0});e&&(n.update=()=>{e((()=>n.run()))})},module.exports=So;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n clip: true,\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */ function toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */ function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */ function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */ function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */ case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */ case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */ function _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */ function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */ function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */ const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */ function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */ function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */ function _createResolver(scopes, prefixes = [\n ''\n], rootScopes, fallback, getTarget = ()=>scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */ function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */ function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).some((key)=>isFunction(value[key]));\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.4.2\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\nfunction getDatasetArea(meta, chartArea) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n function getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nBarElement: BarElement,\nLineElement: LineElement,\nPointElement: PointElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes){\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n const xAverage = [\n ...xSet\n ].reduce((a, b)=>a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter((i)=>this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b)=>a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","import {Chart, registerables} from '../dist/chart.js';\n\nChart.register(...registerables);\n\nexport * from '../dist/chart.js';\nexport default Chart;\n","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\nimport VueRouter from \"vue-router\";\r\nimport Axios from \"axios\";\r\nimport Resumable from \"resumablejs\";\r\nimport Chart from 'chart.js/auto';\r\n\r\n(window).Vue = Vue;\r\n(window).Vuex = Vuex;\r\n(window).VueRouter = VueRouter;\r\n(window).Axios = Axios;\r\n(window).Resumable = Resumable;\r\n(window).Chart = Chart;"],"names":["Resumable","opts","this","version","support","Blob","prototype","webkitSlice","mozSlice","slice","$","files","defaults","chunkSize","forceChunkSize","simultaneousUploads","fileParameterName","chunkNumberParameterName","chunkSizeParameterName","currentChunkSizeParameterName","totalSizeParameterName","typeParameterName","identifierParameterName","fileNameParameterName","relativePathParameterName","totalChunksParameterName","throttleProgressCallbacks","query","headers","preprocess","method","uploadMethod","testMethod","prioritizeFirstAndLastChunk","target","testTarget","parameterNamespace","testChunks","generateUniqueIdentifier","getTarget","maxChunkRetries","chunkRetryInterval","undefined","permanentErrors","maxFiles","withCredentials","xhrTimeout","clearInput","chunkFormat","setChunkTypeFromFile","maxFilesErrorCallback","errorCount","getOpt","alert","minFileSize","minFileSizeErrorCallback","file","fileName","name","$h","formatSize","maxFileSize","maxFileSizeErrorCallback","fileType","fileTypeErrorCallback","o","$opt","Array","options","each","option","ResumableChunk","fileObj","ResumableFile","resumableObj","events","on","event","callback","push","toLowerCase","fire","args","i","arguments","length","apply","stopEvent","e","stopPropagation","preventDefault","custom","relativePath","webkitRelativePath","size","replace","contains","array","test","result","value","toFixed","request","params","separator","indexOf","join","onDrop","dataTransfer","items","loadFiles","processItem","item","path","cb","entry","isFile","isDirectory","File","webkitGetAsEntry","directory","createReader","readEntries","entries","processCallbacks","map","bind","processDirectory","getAsFile","call","appendFilesFromFileList","fileList","removeFile","filesSkipped","remaining","decreaseReamining","window","setTimeout","fileTypeFound","index","extension","addFile","uniqueIdentifier","getFromUniqueIdentifier","f","container","srcElement","then","_prevProgress","_pause","_error","chunkEvent","message","abort","chunks","isComplete","abortCount","c","status","cancel","_chunks","uploadNextChunk","retry","bootstrap","firedRetry","upload","round","Math","ceil","floor","maxOffset","max","offset","progress","ret","error","isUploading","uploading","chunk","outstanding","preprocessState","pause","isPaused","fileObjSize","fileObjType","type","lastProgressCallback","Date","tested","retries","pendingRetry","loaded","startByte","endByte","min","xhr","XMLHttpRequest","testHandler","send","addEventListener","customQuery","k","v","encodeURIComponent","concat","filter","pair","open","timeout","customHeaders","setRequestHeader","preprocessFinished","doneHandler","retryInterval","reduce","func","bytes","data","FormData","append","fr","FileReader","onload","readAsDataURL","readyState","responseText","relative","factor","found","assignBrowse","domNodes","domNode","input","tagName","document","createElement","setAttribute","style","display","opacity","focus","click","appendChild","removeAttribute","fileTypes","assignDrop","unAssignDrop","removeEventListener","num","totalDone","totalSize","addFiles","splice","getSize","handleDropEvent","handleChangeEvent","updateQuery","module","exports","t","Object","freeze","isArray","n","r","s","a","toString","l","u","parseFloat","String","isFinite","catch","d","JSON","stringify","p","__v_isRef","h","isNaN","m","create","split","g","y","_","hasOwnProperty","b","w","x","toUpperCase","C","charAt","S","O","Function","_length","T","A","j","E","N","P","D","every","getTime","keys","M","I","L","R","F","H","B","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","U","z","charCodeAt","V","defineProperty","enumerable","writable","configurable","K","RegExp","source","J","q","W","navigator","userAgent","Z","G","X","Y","Q","match","tt","watch","et","nt","get","ot","process","env","VUE_ENV","rt","__VUE_DEVTOOLS_GLOBAL_HOOK__","st","it","Symbol","Reflect","ownKeys","ct","Set","constructor","set","has","add","clear","at","lt","_scope","off","ut","tag","children","text","elm","ns","context","fnContext","fnOptions","fnScopeId","key","componentOptions","componentInstance","parent","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncFactory","asyncMeta","isAsyncPlaceholder","child","ft","dt","pt","ht","mt","gt","subs","_pending","vt","id","addSub","removeSub","depend","addDep","notify","update","yt","_t","$t","pop","bt","wt","forEach","__ob__","observeArray","dep","xt","getOwnPropertyNames","Ct","kt","St","Ot","Tt","shallow","mock","vmCount","__proto__","jt","At","isExtensible","__v_skip","Ht","getOwnPropertyDescriptor","Pt","Et","Rt","_isVue","Nt","Dt","Mt","It","__v_raw","Lt","__v_isShallow","__v_isReadonly","Ft","Bt","Ut","zt","Vt","Kt","Jt","qt","getPrototypeOf","Wt","Zt","once","capture","passive","Gt","fns","vn","Xt","Yt","hook","merged","Qt","te","ne","ee","shift","_isVList","oe","re","se","is","scopedSlots","default","$vnode","pre","$o","$options","lo","ie","Un","class","ce","iterator","next","done","ae","$scopedSlots","$slots","slot","$createElement","le","ue","fe","de","attrs","domProps","pe","_staticTrees","staticRenderFns","_renderProxy","_c","me","he","ge","ve","ye","$stable","proxy","fn","$key","_e","$e","be","_o","_n","_s","_l","_q","_i","_m","_f","_k","_b","_v","_u","_g","_d","_p","we","xe","Ce","ke","_normalized","$hasNormal","Se","Oe","Te","_attrsProxy","Ae","$attrs","listeners","_listenersProxy","$listeners","slots","_slotsProxy","Ee","emit","$emit","expose","je","Ne","_setupContext","Pe","De","Me","Ie","__esModule","toStringTag","extend","Le","Re","$on","Fe","$off","He","Be","Ue","detached","active","effects","cleanups","scopes","run","stop","teardown","ze","Ve","Ke","Je","$parent","_inactive","qe","_directInactive","$children","Ze","We","_hasHookEvent","Ge","Xe","Ye","Qe","tn","en","nn","now","createEvent","timeStamp","rn","post","sn","sort","before","vm","_watcher","_isMounted","_isDestroyed","cn","noRecurse","kn","an","ln","un","dn","hn","flush","pn","immediate","deep","onTrack","onTrigger","some","onStop","Kn","lazy","_preWatchers","$once","mn","_provided","gn","errorCaptured","yn","_handled","console","$n","bn","wn","xn","Cn","Promise","resolve","MutationObserver","setImmediate","createTextNode","observe","characterData","Sn","go","On","Tn","An","jn","En","Nn","Pn","Dn","Mn","In","Ln","Rn","Fn","Hn","defineComponent","ref","shallowRef","isRef","toRef","toRefs","unref","proxyRefs","customRef","triggerRef","reactive","isReactive","isReadonly","isShallow","isProxy","shallowReactive","markRaw","toRaw","readonly","shallowReadonly","computed","effect","dirty","evaluate","watchEffect","watchPostEffect","watchSyncEffect","EffectScope","effectScope","onScopeDispose","getCurrentScope","provide","inject","getCurrentInstance","useSlots","useAttrs","useListeners","mergeDefaults","nextTick","del","useCssModule","useCssVars","$el","_setupProxy","nodeType","setProperty","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","suspensible","onError","Error","component","loading","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onActivated","onDeactivated","onServerPrefetch","onRenderTracked","onRenderTriggered","onErrorCaptured","Bn","zn","isFrozen","Vn","_vm","user","sync","deps","newDeps","depIds","newDepIds","expression","getter","cleanupDeps","_isBeingDestroyed","Jn","qn","Wn","props","propsData","_props","_propKeys","bo","setup","render","_setupState","__sfc","methods","_data","_computedWatchers","Zn","Gn","Qn","Xn","Yn","cache","handler","$watch","to","from","eo","no","super","superOptions","sealedOptions","extendOptions","components","oo","_original","_compiled","injections","_scopeId","ro","so","io","__name","_componentTag","co","init","keepAlive","prepatch","_isComponent","_parentVnode","inlineTemplate","Ctor","$mount","_renderChildren","_vnode","_parentListeners","$forceUpdate","insert","destroy","$destroy","ao","_base","cid","errorComp","resolved","owners","loadingComp","clearTimeout","model","prop","functional","nativeOn","abstract","_merged","uo","fo","po","ho","mo","vo","yo","directives","extends","mixins","ko","Boolean","xo","wo","Co","So","_init","To","Ao","jo","Eo","_uid","_self","$root","$refs","_events","el","$set","$delete","_update","__patch__","__vue__","$nextTick","_render","No","Po","KeepAlive","include","exclude","Number","cacheVNode","vnodeToCache","keyToCache","parseInt","created","destroyed","mounted","updated","util","warn","mergeOptions","defineReactive","delete","observable","use","_installedPlugins","unshift","install","mixin","_Ctor","Oo","ssrContext","Do","Mo","Io","Lo","Ro","Fo","Vo","Ho","Bo","Uo","zo","Jo","staticClass","qo","Wo","Zo","svg","math","Go","Xo","Yo","Qo","tr","er","nr","querySelector","or","multiple","createElementNS","createComment","insertBefore","removeChild","parentNode","nextSibling","setTextContent","textContent","setStyleScope","rr","sr","refInFor","includes","ir","cr","ar","lr","ur","dr","hr","oldValue","oldArg","arg","gr","def","componentUpdated","inserted","pr","modifiers","mr","rawName","vr","yr","inheritAttrs","_v_attr_proxy","_r","removeAttributeNS","$r","setAttributeNS","__ieph","stopImmediatePropagation","br","wr","Ko","_transitionClasses","_prevClass","xr","Cr","kr","trim","Sr","Or","Tr","Ar","Rr","dynamic","plain","jr","dynamicAttrs","Er","attrsMap","attrsList","Nr","isDynamicArg","Pr","Dr","right","middle","native","nativeEvents","Mr","Ir","Lr","start","end","Fr","number","Hr","Br","lastIndexOf","Vr","exp","Ur","Kr","Jr","Wr","zr","qr","Zr","Xr","Gr","Yr","Qr","ts","es","rs","os","_wrapper","currentTarget","ownerDocument","ss","change","cs","as","childNodes","_value","ls","innerHTML","firstChild","composing","activeElement","_vModifiers","us","fs","ds","ps","staticStyle","hs","ms","gs","vs","ys","$s","normalizedStyle","bs","ws","xs","classList","getAttribute","Cs","remove","ks","css","Ss","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","Os","Ts","As","js","Es","Ns","Ps","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","Ds","requestAnimationFrame","Ms","Is","Ls","Rs","propCount","Hs","Fs","getComputedStyle","Bs","hasTransform","Us","zs","_leaveCb","cancelled","transition","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","enter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","Js","show","Ks","Vs","beforeLeave","leave","afterLeave","leaveCancelled","delayLeave","qs","Ws","modules","nodeOps","activate","pendingInsert","postpatch","hasChildNodes","hasAttribute","vmodel","ni","Zs","_vOptions","Gs","Qs","ti","ei","Ys","Xs","selected","selectedIndex","initEvent","dispatchEvent","oi","ri","__vOriginalDisplay","unbind","si","ii","mode","ci","ai","li","ui","fi","di","_leaving","pi","moveClass","hi","beforeMount","kept","prevChildren","pos","getBoundingClientRect","removed","hasMove","mi","gi","vi","_reflow","body","offsetHeight","moved","transform","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","left","top","yi","Transition","TransitionGroup","config","HTMLUnknownElement","HTMLElement","$i","bi","wi","staticKeys","transformNode","classBinding","genData","xi","styleBinding","Ci","Si","Oi","Ti","Ai","ji","Ei","Ni","Pi","Di","Mi","Ii","Li","Ri","Fi","Hi","Bi","Ui","zi","Vi","Ki","Ji","qi","Wi","Zi","Gi","Xi","Yi","Qi","tc","ec","nc","oc","rc","sc","ic","cc","ac","lc","uc","fc","dc","pc","hc","mc","wc","rawAttrsMap","vc","for","slotScope","slotTarget","slotTargetDynamic","$c","slotName","hasBindings","bc","camel","yc","alias","iterator1","iterator2","ifConditions","xc","Cc","kc","Sc","preTransformNode","processed","if","block","else","elseif","Oc","expectHTML","html","isPreTag","isUnaryTag","canBeLeftOpenTag","Tc","Ac","jc","Ec","Nc","Pc","static","staticInFor","staticRoot","Dc","Mc","Ic","Lc","esc","tab","space","up","down","Rc","Fc","Hc","prevent","self","ctrl","alt","meta","Bc","Uc","zc","Vc","wrapListeners","wrapData","cloak","Kc","transforms","dataGenFns","maybeComponent","onceId","Jc","qc","staticProcessed","Wc","onceProcessed","Zc","forProcessed","Yc","ifProcessed","Gc","na","sa","Qc","bindings","__isScriptSetup","Xc","ta","ea","oa","ra","ia","ca","err","code","aa","delimiters","la","ua","preserveWhitespace","whitespace","forbidden","chars","shouldKeepComment","comment","substring","unarySlash","shouldDecodeNewlinesForHref","shouldDecodeNewlines","lowerCasedTag","comments","outputSourceRange","placeholder","lastIndex","exec","tokens","gc","optimize","ast","errors","tips","compile","compileToFunctions","fa","da","pa","ha","ma","ga","va","ya","documentElement","template","outerHTML","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","globalThis","obj","devtoolHook","deepCopy","hit","original","copy","forEachValue","isObject","Module","rawModule","runtime","_children","_rawModule","rawState","state","prototypeAccessors","namespaced","addChild","getChild","hasChild","actions","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","defineProperties","Vue","ModuleCollection","rawRootModule","register","targetModule","newModule","root","getNamespace","namespace","this$1","rawChildModule","unregister","isRegistered","Store","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","store","dispatch","commit","payload","installModule","resetStoreVM","plugin","_devtoolHook","targetState","replaceState","subscribe","mutation","prepend","subscribeAction","action","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","partial","$$state","enableStrictMode","_withCommit","rootState","isRoot","parentState","getNestedState","moduleName","local","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","val","res","rootGetters","registerAction","rawGetter","registerGetter","_Vue","beforeCreate","vuexInit","$store","applyMixin","sub","all","reject","after","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","len","mapGetters","mapActions","isValidMap","helper","startMessage","logger","collapsed","groupCollapsed","group","log","endMessage","groupEnd","getFormattedTime","time","pad","getHours","getMinutes","getSeconds","getMilliseconds","maxLength","times","createNamespacedHelpers","createLogger","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","prevState","nextState","formattedTime","formattedMutation","formattedAction","encodeReserveRE","encodeReserveReplacer","commaRE","encode","str","decode","decodeURIComponent","castQueryParamValue","parseQuery","param","parts","stringifyQuery","val2","trailingSlashRE","createRoute","record","location","redirectedFrom","router","clone","route","hash","fullPath","getFullPath","matched","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","aVal","bVal","handleRouteEntered","instances","instance","cbs","enteredCbs","i$1","View","routerView","$route","_routerViewCache","depth","inactive","_routerRoot","vnodeData","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","current","vnode","propsToPass","resolveProps","resolvePath","base","firstChar","stack","segments","segment","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","groups","prefix","delimiter","optional","repeat","asterisk","pattern","attachKeys","regexpToRegexp","flags","arrayToRegexp","tokensToRegExp","parse","stringToRegexp","parse_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","PATH_REGEXP","defaultDelimiter","escaped","modifier","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","matches","pretty","token","TypeError","sensitive","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","params$1","rawPath","parsedPath","hashIndex","queryIndex","parsePath","basePath","extraQuery","_parseQuery","parsedQuery","resolveQuery","noop","Link","required","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","this$1$1","$router","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","queryIncludes","isIncludedRoute","guardEvent","scopedSlot","navigate","isActive","isExactActive","findAnchor","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","redirect","childMatchAs","aliases","aliasRoute","createMatcher","currentRoute","_createRoute","paramNames","record$1","matchRoute","originalRedirect","resolveRecordPath","aliasedMatch","aliasedRecord","addRoute","parentOrRoute","getRoutes","addRoutes","Time","genStateKey","_key","getStateKey","setStateKey","positionStore","setupScroll","history","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","handlePopState","handleScroll","isPop","app","behavior","scrollBehavior","position","getScrollPosition","shouldScroll","scrollToPosition","saveScrollPosition","pageXOffset","pageYOffset","isValidPosition","isNumber","normalizePosition","hashStartsWithNumberRE","selector","getElementById","docRect","elRect","getElementPosition","scrollTo","supportsPushState","pushState","url","NavigationFailureType","redirected","aborted","duplicated","createNavigationCancelledError","createRouterError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","step","flatMapComponents","flatten","hasSymbol","called","History","baseEl","normalizeBase","pending","ready","readyCbs","readyErrorCbs","errorCbs","extractGuards","records","reverse","guards","guard","extractGuard","bindGuard","listen","onReady","errorCb","transitionTo","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","createNavigationDuplicatedError","activated","deactivated","resolveQueue","extractLeaveGuards","beforeHooks","extractUpdateHooks","hasAsync","resolvedDef","reason","msg","comp","createNavigationAbortedError","createNavigationRedirectedError","enterGuards","bindEnterGuard","extractEnterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","fromRoute","getCurrentLocation","pathname","pathLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","routeOrError","handleInitialScroll","_route","beforeEach","registerHook","beforeResolve","afterEach","back","forward","getMatchedComponents","createHref","normalizedTo","VueRouter$1","list","thisArg","installed","isDef","registerInstance","callVal","_router","strats","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","START_LOCATION","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isString","isFunction","isPlainObject","isDate","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","global","isContextDefined","isTypedArray","TypedArray","Uint8Array","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","postMessage","random","callbacks","asap","queueMicrotask","isBuffer","isFormData","kind","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","stripBOM","content","inherits","superConstructor","assign","toFlatObject","sourceObj","destObj","propFilter","endsWith","searchString","toArray","forEachEntry","matchAll","regExp","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","define","toCamelCase","p1","p2","toFiniteNumber","defaultValue","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","response","captureStackTrace","utils","toJSON","description","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","indexes","visitor","defaultVisitor","useBlob","convertValue","toISOString","Buffer","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","handlers","fulfilled","rejected","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","URLSearchParams","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","adapter","transformRequest","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","platform","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","rawValue","parser","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalize","format","normalized","char","formatHeader","targets","asStrings","first","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","transformData","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","lastArgs","timer","timestamp","threshold","invoke","total","lengthComputable","progressBytes","rate","estimated","progressEventDecorator","throttled","asyncDecorator","msie","urlParsingNode","originURL","resolveURL","hostname","port","requestURL","write","expires","domain","secure","cookie","toGMTString","read","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","auth","btoa","username","password","unescape","isURLSameOrigin","xsrfValue","cookies","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","onloadend","responseHeaders","getAllResponseHeaders","statusText","onreadystatechange","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","parseProtocol","signals","controller","AbortController","streamChunk","byteLength","trackStream","stream","onProgress","onFinish","iterable","asyncIterator","reader","getReader","readStream","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","return","highWaterMark","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","fetchOptions","composedSignal","toAbortSignal","requestContentLength","getContentLength","_request","getBodyLength","resolveBodyLength","contentTypeHeader","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","responseData","knownAdapters","http","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","validators","deprecatedWarnings","validator","formatMessage","opt","desc","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","VERSION","toFormData","Cancel","promises","spread","isAxiosError","formToJSON","getAdapter","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","h2","eq","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names","RGB_RE","pow","modHSL","ratio","tmp","proto","fromObject","functionParse","rgbParse","hwb2rgb","hsv2rgb","hueParse","Color","unpacked","tkeys","ok","nk","unpack","transparent","nameParse","_rgb","_valid","valid","rgbString","hexString","isShort","alpha","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","uid","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","part","_splitKey","_getKeyResolver","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","niceRange","fraction","_setMinAndMaxByKey","property","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","_lookupByKey","last","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","argsToUse","ticking","_toLeftRightCenter","align","_alignStartEnd","_getStartAndCountOfVisiblePoints","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","numbers","colors","intlCache","Map","formatNumber","locale","cacheKey","formatter","Intl","NumberFormat","getNumberFormat","formatters","values","numeric","tickValue","ticks","chart","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","overrides","getScope$1","node","scope","Defaults","_descriptors","_appliers","animation","backgroundColor","borderColor","datasets","devicePixelRatio","getDevicePixelRatio","elements","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","targetScope","targetName","scopeObject","targetScopeObject","privateName","appliers","_scriptable","startsWith","_indexable","_fallback","easing","loop","properties","resize","animations","visible","hide","autoPadding","padding","bottom","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","width","title","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","_measureText","longest","string","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","fillStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","translation","textAlign","textBaseline","setRenderOpts","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","info","cacheable","createContext","parentContext","_createResolver","prefixes","rootScopes","finalRootScopes","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","isScriptable","getValue","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fb","capControlPoint","_updateBezierControlPoints","controlPoints","spanGaps","cubicInterpolationMode","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","splineCurveMonotone","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","element","defaultView","positions","getPositionedStyle","styles","suffix","useOffsetPos","shadowRoot","getRelativePosition","borderBox","boxSizing","paddings","borders","box","touches","offsetX","offsetY","clientX","clientY","getCanvasPosition","round1","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalizeSegment","_boundSegment","startBound","endBound","getSegment","prevValue","inside","subStart","_boundSegments","readStyle","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","styleChanged","prevStyle","replacer","Animator","_charts","_running","_lastDate","_notify","anims","date","numSteps","initial","currentStep","_refresh","running","draw","_active","_total","tick","_getAnims","charts","complete","acc","cur","_duration","animator","interpolators","c0","Animation","cfg","currentValue","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","wait","rej","Animations","_chart","_properties","configure","animationOptions","animatedProps","_animateOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","adata","convertObjectDataToArray","object","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","disabled","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","numMeta","numData","_insertElements","_removeElements","move","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","getAllScaleValues","curr","updateMinAndPrev","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","DoughnutController","animateRotate","animateScale","cutout","circumference","spacing","aspectRatio","legend","generateLabels","fontColor","getDataVisibility","legendItem","toggleDataVisibility","innerRadius","outerRadius","_getRotation","_getCircumference","_getRotationExtents","isDatasetVisible","arcs","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxHeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","calculateCircumference","animationOpts","centerX","centerY","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","PolarAreaController","angleLines","circular","pointLabels","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","controllers","BarController","categoryPercentage","barPercentage","grouped","_index_","_value_","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","baseValue","minBarLength","actualBase","floating","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","BubbleController","LineController","_dataset","_datasetIndex","_decimated","animated","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","registry","getElement","DateAdapterBase","members","formats","diff","startOf","endOf","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestCartesianItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","layout","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","fullSize","setBoxDims","placeBoxes","userPadding","placed","stackWeight","layouts","addBox","_layers","removeBox","layoutItem","minPadding","availableWidth","availableHeight","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","buildStacks","setLayoutDims","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","trigger","addedNodes","removedNodes","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","clientWidth","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","addListener","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","bbWidth","bbHeight","margins","containerSize","containerStyle","containerBorder","containerPadding","clientHeight","getContainerSize","isConnected","Element","tooltipPosition","hasValue","final","newTicks","majorStart","majorEnd","offsetFromEdge","getTicksLimit","ticksLength","maxTicksLimit","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","getLabelItems","_computeLabelItems","beforeUpdate","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","determinedMaxTicks","_tickSize","maxScale","maxChart","determineMaxTicks","ticksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","drawBorder","lastLineWidth","drawLabels","renderTextOptions","drawTitle","titleX","titleY","titleArgs","tz","gz","bz","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","defaultRoutes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","reg","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","_createDescriptors","cancelable","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","determineAxis","scaleOptions","getAxisFromDataset","initOptions","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","getCanvas","getChart","moveNumericKeys","intKey","getSizeForArea","field","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","pluginId","replay","hoverOptions","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","parseBorderRadius$1","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","setStyle","lineCap","lineJoin","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","segmentOptions","findStartAndEnd","chartContext","baseStyle","addStyle","dir","p0","p0DataIndex","p1DataIndex","doSplitByStyles","splitByStyles","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","segmentMethod","strokePathWithCache","strokePathDirect","inRange$1","hitRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","amount","refRect","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","inner","angleMargin","clipArc","BarElement","outer","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","boundingRects","addRectPath","mouseX","mouseY","inXRange","inYRange","PointElement","hoverRadius","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","containsColorsDefinitions","plugin_colors","forceOverride","_args","chartOptions","colorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","getColorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","decimated","getStartAndCountOfVisiblePointsSimplified","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAy","pointAx","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","_drawfill","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","afterEvent","useBorderRadius","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","xSet","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","formattedValue","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","getTitle","getBeforeBody","getBody","bodyItems","scoped","getAfterBody","getFooter","_createItems","itemSort","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","Colors","Decimation","Filler","SubTitle","_getLabelForValue","relativeLabelSize","minSpacing","LinearScaleBase","_startValue","_endValue","_valueRange","handleTickRangeOptions","setMin","setMax","minSign","maxSign","getTickLimit","maxTicks","stepSize","computeTickLimit","generationOptions","dataRange","precision","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","generateTicks$1","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","LogarithmicScale","_zero","minExp","startExp","lastTick","generateTicks","getTickBackdropHeight","determineLimits","updateLimits","limits","hLimits","vLimits","createPointLabelItem","itemOpts","outerDistance","drawingArea","extra","additionalAngle","pointLabelPosition","getPointPosition","yForAngle","getTextAlignForAngle","isNotOverlapped","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","RadialLinearScale","animate","centerPointLabels","_pointLabels","_pointLabelItems","valueCount","pointLabelOpts","getPointLabelContext","plFont","setCenterPoint","buildPointLabelItems","fitWithPointLabels","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","millisecond","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","_adapter","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","displayFormats","_unit","_majorUnit","_offsets","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","fmt","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","registerables","CategoryScale","_addedLabels","added","addedLabels","addIfString","findOrAddLabel","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","Vuex"],"sourceRoot":""}