web_plsql 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,7 +39,7 @@
39
39
 
40
40
  Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const a of e.seen.entries()){const s=a[1];if(t===a[0]){o(a);continue}if(e.external){const l=e.external.registry.get(a[0])?.id;if(t!==a[0]&&l){o(a);continue}}if(e.metadataRegistry.get(a[0])?.id){o(a);continue}if(s.cycle){o(a);continue}if(s.count>1&&e.reused==="ref"){o(a);continue}}}function Lt(e,t){const i=e.seen.get(t);if(!i)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=a=>{const s=e.seen.get(a);if(s.ref===null)return;const c=s.def??s.schema,l={...c},u=s.ref;if(s.ref=null,u){r(u);const f=e.seen.get(u),h=f.schema;if(h.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(h)):Object.assign(c,h),Object.assign(c,l),a._zod.parent===u)for(const m in c)m==="$ref"||m==="allOf"||m in l||delete c[m];if(h.$ref&&f.def)for(const m in c)m==="$ref"||m==="allOf"||m in f.def&&JSON.stringify(c[m])===JSON.stringify(f.def[m])&&delete c[m]}const d=a._zod.parent;if(d&&d!==u){r(d);const f=e.seen.get(d);if(f?.schema.$ref&&(c.$ref=f.schema.$ref,f.def))for(const h in c)h==="$ref"||h==="allOf"||h in f.def&&JSON.stringify(c[h])===JSON.stringify(f.def[h])&&delete c[h]}e.override({zodSchema:a,jsonSchema:c,path:s.path??[]})};for(const a of[...e.seen.entries()].reverse())r(a[0]);const n={};if(e.target==="draft-2020-12"?n.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?n.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?n.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const a=e.external.registry.get(t)?.id;if(!a)throw new Error("Schema is missing an `id` property");n.$id=e.external.uri(a)}Object.assign(n,i.def??i.schema);const o=e.external?.defs??{};for(const a of e.seen.entries()){const s=a[1];s.def&&s.defId&&(o[s.defId]=s.def)}e.external||Object.keys(o).length>0&&(e.target==="draft-2020-12"?n.$defs=o:n.definitions=o);try{const a=JSON.parse(JSON.stringify(n));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:vn(t,"input",e.processors),output:vn(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch{throw new Error("Error converting schema to JSON.")}}function he(e,t){const i=t??{seen:new Set};if(i.seen.has(e))return!1;i.seen.add(e);const r=e._zod.def;if(r.type==="transform")return!0;if(r.type==="array")return he(r.element,i);if(r.type==="set")return he(r.valueType,i);if(r.type==="lazy")return he(r.getter(),i);if(r.type==="promise"||r.type==="optional"||r.type==="nonoptional"||r.type==="nullable"||r.type==="readonly"||r.type==="default"||r.type==="prefault")return he(r.innerType,i);if(r.type==="intersection")return he(r.left,i)||he(r.right,i);if(r.type==="record"||r.type==="map")return he(r.keyType,i)||he(r.valueType,i);if(r.type==="pipe")return he(r.in,i)||he(r.out,i);if(r.type==="object"){for(const n in r.shape)if(he(r.shape[n],i))return!0;return!1}if(r.type==="union"){for(const n of r.options)if(he(n,i))return!0;return!1}if(r.type==="tuple"){for(const n of r.items)if(he(n,i))return!0;return!!(r.rest&&he(r.rest,i))}return!1}const Kf=(e,t={})=>i=>{const r=Nt({...i,processors:t});return H(e,r),Rt(r,e),Lt(r,e)},vn=(e,t,i={})=>r=>{const{libraryOptions:n,target:o}=r??{},a=Nt({...n??{},target:o,io:t,processors:i});return H(e,a),Rt(a,e),Lt(a,e)},hy={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Xf=(e,t,i,r)=>{const n=i;n.type="string";const{minimum:o,maximum:a,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof o=="number"&&(n.minLength=o),typeof a=="number"&&(n.maxLength=a),s&&(n.format=hy[s]??s,n.format===""&&delete n.format,s==="time"&&delete n.format),l&&(n.contentEncoding=l),c&&c.size>0){const u=[...c];u.length===1?n.pattern=u[0].source:u.length>1&&(n.allOf=[...u.map(d=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:d.source}))])}},Gf=(e,t,i,r)=>{const n=i,{minimum:o,maximum:a,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;typeof s=="string"&&s.includes("int")?n.type="integer":n.type="number",typeof u=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(n.minimum=u,n.exclusiveMinimum=!0):n.exclusiveMinimum=u),typeof o=="number"&&(n.minimum=o,typeof u=="number"&&t.target!=="draft-04"&&(u>=o?delete n.minimum:delete n.exclusiveMinimum)),typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(n.maximum=l,n.exclusiveMaximum=!0):n.exclusiveMaximum=l),typeof a=="number"&&(n.maximum=a,typeof l=="number"&&t.target!=="draft-04"&&(l<=a?delete n.maximum:delete n.exclusiveMaximum)),typeof c=="number"&&(n.multipleOf=c)},Yf=(e,t,i,r)=>{i.type="boolean"},Qf=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},eh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},th=(e,t,i,r)=>{t.target==="openapi-3.0"?(i.type="string",i.nullable=!0,i.enum=[null]):i.type="null"},nh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},ih=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},rh=(e,t,i,r)=>{i.not={}},oh=(e,t,i,r)=>{},ah=(e,t,i,r)=>{},sh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},ch=(e,t,i,r)=>{const n=e._zod.def,o=mo(n.entries);o.every(a=>typeof a=="number")&&(i.type="number"),o.every(a=>typeof a=="string")&&(i.type="string"),i.enum=o},lh=(e,t,i,r)=>{const n=e._zod.def,o=[];for(const a of n.values)if(a===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");o.push(Number(a))}else o.push(a);if(o.length!==0)if(o.length===1){const a=o[0];i.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?i.enum=[a]:i.const=a}else o.every(a=>typeof a=="number")&&(i.type="number"),o.every(a=>typeof a=="string")&&(i.type="string"),o.every(a=>typeof a=="boolean")&&(i.type="boolean"),o.every(a=>a===null)&&(i.type="null"),i.enum=o},uh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},dh=(e,t,i,r)=>{const n=i,o=e._zod.pattern;if(!o)throw new Error("Pattern not found in template literal");n.type="string",n.pattern=o.source},fh=(e,t,i,r)=>{const n=i,o={type:"string",format:"binary",contentEncoding:"binary"},{minimum:a,maximum:s,mime:c}=e._zod.bag;a!==void 0&&(o.minLength=a),s!==void 0&&(o.maxLength=s),c?c.length===1?(o.contentMediaType=c[0],Object.assign(n,o)):(Object.assign(n,o),n.anyOf=c.map(l=>({contentMediaType:l}))):Object.assign(n,o)},hh=(e,t,i,r)=>{i.type="boolean"},mh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},gh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},ph=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},vh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},bh=(e,t,i,r)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},yh=(e,t,i,r)=>{const n=i,o=e._zod.def,{minimum:a,maximum:s}=e._zod.bag;typeof a=="number"&&(n.minItems=a),typeof s=="number"&&(n.maxItems=s),n.type="array",n.items=H(o.element,t,{...r,path:[...r.path,"items"]})},_h=(e,t,i,r)=>{const n=i,o=e._zod.def;n.type="object",n.properties={};const a=o.shape;for(const l in a)n.properties[l]=H(a[l],t,{...r,path:[...r.path,"properties",l]});const s=new Set(Object.keys(a)),c=new Set([...s].filter(l=>{const u=o.shape[l]._zod;return t.io==="input"?u.optin===void 0:u.optout===void 0}));c.size>0&&(n.required=Array.from(c)),o.catchall?._zod.def.type==="never"?n.additionalProperties=!1:o.catchall?o.catchall&&(n.additionalProperties=H(o.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):t.io==="output"&&(n.additionalProperties=!1)},da=(e,t,i,r)=>{const n=e._zod.def,o=n.inclusive===!1,a=n.options.map((s,c)=>H(s,t,{...r,path:[...r.path,o?"oneOf":"anyOf",c]}));o?i.oneOf=a:i.anyOf=a},$h=(e,t,i,r)=>{const n=e._zod.def,o=H(n.left,t,{...r,path:[...r.path,"allOf",0]}),a=H(n.right,t,{...r,path:[...r.path,"allOf",1]}),s=l=>"allOf"in l&&Object.keys(l).length===1,c=[...s(o)?o.allOf:[o],...s(a)?a.allOf:[a]];i.allOf=c},xh=(e,t,i,r)=>{const n=i,o=e._zod.def;n.type="array";const a=t.target==="draft-2020-12"?"prefixItems":"items",s=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",c=o.items.map((f,h)=>H(f,t,{...r,path:[...r.path,a,h]})),l=o.rest?H(o.rest,t,{...r,path:[...r.path,s,...t.target==="openapi-3.0"?[o.items.length]:[]]}):null;t.target==="draft-2020-12"?(n.prefixItems=c,l&&(n.items=l)):t.target==="openapi-3.0"?(n.items={anyOf:c},l&&n.items.anyOf.push(l),n.minItems=c.length,l||(n.maxItems=c.length)):(n.items=c,l&&(n.additionalItems=l));const{minimum:u,maximum:d}=e._zod.bag;typeof u=="number"&&(n.minItems=u),typeof d=="number"&&(n.maxItems=d)},kh=(e,t,i,r)=>{const n=i,o=e._zod.def;n.type="object";const a=o.keyType,c=a._zod.bag?.patterns;if(o.mode==="loose"&&c&&c.size>0){const u=H(o.valueType,t,{...r,path:[...r.path,"patternProperties","*"]});n.patternProperties={};for(const d of c)n.patternProperties[d.source]=u}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(n.propertyNames=H(o.keyType,t,{...r,path:[...r.path,"propertyNames"]})),n.additionalProperties=H(o.valueType,t,{...r,path:[...r.path,"additionalProperties"]});const l=a._zod.values;if(l){const u=[...l].filter(d=>typeof d=="string"||typeof d=="number");u.length>0&&(n.required=u)}},Sh=(e,t,i,r)=>{const n=e._zod.def,o=H(n.innerType,t,r),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=n.innerType,i.nullable=!0):i.anyOf=[o,{type:"null"}]},wh=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType},Ih=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType,i.default=JSON.parse(JSON.stringify(n.defaultValue))},zh=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType,t.io==="input"&&(i._prefault=JSON.parse(JSON.stringify(n.defaultValue)))},Th=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType;let a;try{a=n.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}i.default=a},Oh=(e,t,i,r)=>{const n=e._zod.def,o=t.io==="input"?n.in._zod.def.type==="transform"?n.out:n.in:n.out;H(o,t,r);const a=t.seen.get(e);a.ref=o},Dh=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType,i.readOnly=!0},Ph=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType},fa=(e,t,i,r)=>{const n=e._zod.def;H(n.innerType,t,r);const o=t.seen.get(e);o.ref=n.innerType},Eh=(e,t,i,r)=>{const n=e._zod.innerType;H(n,t,r);const o=t.seen.get(e);o.ref=n},no={string:Xf,number:Gf,boolean:Yf,bigint:Qf,symbol:eh,null:th,undefined:nh,void:ih,never:rh,any:oh,unknown:ah,date:sh,enum:ch,literal:lh,nan:uh,template_literal:dh,file:fh,success:hh,custom:mh,function:gh,transform:ph,map:vh,set:bh,array:yh,object:_h,union:da,intersection:$h,tuple:xh,record:kh,nullable:Sh,nonoptional:wh,default:Ih,prefault:zh,catch:Th,pipe:Oh,readonly:Dh,promise:Ph,optional:fa,lazy:Eh};function jh(e,t){if("_idmap"in e){const r=e,n=Nt({...t,processors:no}),o={};for(const c of r._idmap.entries()){const[l,u]=c;H(u,n)}const a={},s={registry:r,uri:t?.uri,defs:o};n.external=s;for(const c of r._idmap.entries()){const[l,u]=c;Rt(n,u),a[l]=Lt(n,u)}if(Object.keys(o).length>0){const c=n.target==="draft-2020-12"?"$defs":"definitions";a.__shared={[c]:o}}return{schemas:a}}const i=Nt({...t,processors:no});return H(e,i),Rt(i,e),Lt(i,e)}class my{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let i=t?.target??"draft-2020-12";i==="draft-4"&&(i="draft-04"),i==="draft-7"&&(i="draft-07"),this.ctx=Nt({processors:no,target:i,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,i={path:[],schemaPath:[]}){return H(t,this.ctx,i)}emit(t,i){i&&(i.cycles&&(this.ctx.cycles=i.cycles),i.reused&&(this.ctx.reused=i.reused),i.external&&(this.ctx.external=i.external)),Rt(this.ctx,t);const r=Lt(this.ctx,t),{"~standard":n,...o}=r;return o}}const gy=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),py=Object.freeze(Object.defineProperty({__proto__:null,$ZodAny:_d,$ZodArray:wd,$ZodAsyncError:vt,$ZodBase64:cd,$ZodBase64URL:ud,$ZodBigInt:Co,$ZodBigIntFormat:pd,$ZodBoolean:Mo,$ZodCIDRv4:ad,$ZodCIDRv6:sd,$ZodCUID:qu,$ZodCUID2:Ku,$ZodCatch:Hd,$ZodCheck:Y,$ZodCheckBigIntFormat:Su,$ZodCheckEndsWith:Uu,$ZodCheckGreaterThan:Po,$ZodCheckIncludes:Mu,$ZodCheckLengthEquals:Du,$ZodCheckLessThan:Do,$ZodCheckLowerCase:Eu,$ZodCheckMaxLength:Tu,$ZodCheckMaxSize:wu,$ZodCheckMimeType:Nu,$ZodCheckMinLength:Ou,$ZodCheckMinSize:Iu,$ZodCheckMultipleOf:xu,$ZodCheckNumberFormat:ku,$ZodCheckOverwrite:Ru,$ZodCheckProperty:Au,$ZodCheckRegex:Pu,$ZodCheckSizeEquals:zu,$ZodCheckStartsWith:Cu,$ZodCheckStringFormat:Un,$ZodCheckUpperCase:ju,$ZodCodec:No,$ZodCustom:ef,$ZodCustomStringFormat:md,$ZodDate:Sd,$ZodDefault:Zd,$ZodDiscriminatedUnion:Pd,$ZodE164:dd,$ZodEmail:Wu,$ZodEmoji:Hu,$ZodEncodeError:Ni,$ZodEnum:Ud,$ZodError:po,$ZodExactOptional:Ld,$ZodFile:Nd,$ZodFunction:Gd,$ZodGUID:Zu,$ZodIPv4:id,$ZodIPv6:rd,$ZodISODate:ed,$ZodISODateTime:Qu,$ZodISODuration:nd,$ZodISOTime:td,$ZodIntersection:Ed,$ZodJWT:hd,$ZodKSUID:Yu,$ZodLazy:Qd,$ZodLiteral:Ad,$ZodMAC:od,$ZodMap:Md,$ZodNaN:Jd,$ZodNanoID:Ju,$ZodNever:xd,$ZodNonOptional:Wd,$ZodNull:yd,$ZodNullable:Fd,$ZodNumber:jo,$ZodNumberFormat:gd,$ZodObject:Td,$ZodObjectJIT:Od,$ZodOptional:Ao,$ZodPipe:qd,$ZodPrefault:Bd,$ZodPromise:Yd,$ZodReadonly:Kd,$ZodRealError:xe,$ZodRecord:jd,$ZodRegistry:cf,$ZodSet:Cd,$ZodString:An,$ZodStringFormat:q,$ZodSuccess:Vd,$ZodSymbol:vd,$ZodTemplateLiteral:Xd,$ZodTransform:Rd,$ZodTuple:Uo,$ZodType:C,$ZodULID:Xu,$ZodURL:Vu,$ZodUUID:Bu,$ZodUndefined:bd,$ZodUnion:Bi,$ZodUnknown:$d,$ZodVoid:kd,$ZodXID:Gu,$ZodXor:Dd,$brand:vl,$constructor:v,$input:sf,$output:af,Doc:Lu,JSONSchema:gy,JSONSchemaGenerator:my,NEVER:pl,TimePrecision:ff,_any:jf,_array:Lf,_base64:na,_base64url:ia,_bigint:If,_boolean:Sf,_catch:sy,_check:Vf,_cidrv4:ea,_cidrv6:ta,_coercedBigint:zf,_coercedBoolean:wf,_coercedDate:Nf,_coercedNumber:bf,_coercedString:uf,_cuid:Jo,_cuid2:qo,_custom:Zf,_date:Af,_decode:_o,_decodeAsync:xo,_default:ry,_discriminatedUnion:Hb,_e164:ra,_email:Lo,_emoji:Vo,_encode:yo,_encodeAsync:$o,_endsWith:Xi,_enum:Yb,_file:Ff,_float32:_f,_float64:$f,_gt:tt,_gte:pe,_guid:wi,_includes:qi,_int:yf,_int32:xf,_int64:Tf,_intersection:Jb,_ipv4:Yo,_ipv6:Qo,_isoDate:mf,_isoDateTime:hf,_isoDuration:pf,_isoTime:gf,_jwt:oa,_ksuid:Go,_lazy:dy,_length:Ln,_literal:ey,_lowercase:Hi,_lt:et,_lte:Ie,_mac:df,_map:Xb,_max:Ie,_maxLength:Rn,_maxSize:Ht,_mime:Gi,_min:pe,_minLength:_t,_minSize:nt,_multipleOf:At,_nan:Rf,_nanoid:Ho,_nativeEnum:Qb,_negative:sa,_never:Cf,_nonnegative:la,_nonoptional:oy,_nonpositive:ca,_normalize:Yi,_null:Ef,_nullable:iy,_number:vf,_optional:ny,_overwrite:Je,_parse:Dn,_parseAsync:Pn,_pipe:cy,_positive:aa,_promise:fy,_property:ua,_readonly:ly,_record:Kb,_refine:Bf,_regex:Vi,_safeDecode:So,_safeDecodeAsync:Io,_safeEncode:ko,_safeEncodeAsync:wo,_safeParse:En,_safeParseAsync:jn,_set:Gb,_size:Nn,_slugify:nr,_startsWith:Ki,_string:lf,_stringFormat:Fn,_stringbool:qf,_success:ay,_superRefine:Wf,_symbol:Df,_templateLiteral:uy,_toLowerCase:er,_toUpperCase:tr,_transform:ty,_trim:Qi,_tuple:qb,_uint32:kf,_uint64:Of,_ulid:Ko,_undefined:Pf,_union:Wb,_unknown:Mf,_uppercase:Ji,_url:Wi,_uuid:Fo,_uuidv4:Zo,_uuidv6:Bo,_uuidv7:Wo,_void:Uf,_xid:Xo,_xor:Vb,clone:Te,config:de,createStandardJSONSchemaMethod:vn,createToJSONSchemaMethod:Kf,decode:Tp,decodeAsync:Dp,describe:Hf,encode:zp,encodeAsync:Op,extractDefs:Rt,finalize:Lt,flattenError:vo,formatError:bo,globalConfig:$i,globalRegistry:we,initializeContext:Nt,isValidBase64:Eo,isValidBase64URL:ld,isValidJWT:fd,locales:of,meta:Jf,parse:Qr,parseAsync:eo,prettifyError:Nl,process:H,regexes:Oo,registry:Ro,safeDecode:Ep,safeDecodeAsync:Mp,safeEncode:Pp,safeEncodeAsync:jp,safeParse:Rl,safeParseAsync:Ll,toDotPath:Al,toJSONSchema:jh,treeifyError:Ul,util:Ml,version:Fu},Symbol.toStringTag,{value:"Module"})),vy=Object.freeze(Object.defineProperty({__proto__:null,endsWith:Xi,gt:tt,gte:pe,includes:qi,length:Ln,lowercase:Hi,lt:et,lte:Ie,maxLength:Rn,maxSize:Ht,mime:Gi,minLength:_t,minSize:nt,multipleOf:At,negative:sa,nonnegative:la,nonpositive:ca,normalize:Yi,overwrite:Je,positive:aa,property:ua,regex:Vi,size:Nn,slugify:nr,startsWith:Ki,toLowerCase:er,toUpperCase:tr,trim:Qi,uppercase:Ji},Symbol.toStringTag,{value:"Module"})),ha=v("ZodISODateTime",(e,t)=>{Qu.init(e,t),K.init(e,t)});function Mh(e){return hf(ha,e)}const ma=v("ZodISODate",(e,t)=>{ed.init(e,t),K.init(e,t)});function Ch(e){return mf(ma,e)}const ga=v("ZodISOTime",(e,t)=>{td.init(e,t),K.init(e,t)});function Uh(e){return gf(ga,e)}const pa=v("ZodISODuration",(e,t)=>{nd.init(e,t),K.init(e,t)});function Ah(e){return pf(pa,e)}const Nh=Object.freeze(Object.defineProperty({__proto__:null,ZodISODate:ma,ZodISODateTime:ha,ZodISODuration:pa,ZodISOTime:ga,date:Ch,datetime:Mh,duration:Ah,time:Uh},Symbol.toStringTag,{value:"Module"})),Rh=(e,t)=>{po.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:i=>bo(e,i)},flatten:{value:i=>vo(e,i)},addIssue:{value:i=>{e.issues.push(i),e.message=JSON.stringify(e.issues,xi,2)}},addIssues:{value:i=>{e.issues.push(...i),e.message=JSON.stringify(e.issues,xi,2)}},isEmpty:{get(){return e.issues.length===0}}})},by=v("ZodError",Rh),ke=v("ZodError",Rh,{Parent:Error}),Lh=Dn(ke),Fh=Pn(ke),Zh=En(ke),Bh=jn(ke),Wh=yo(ke),Vh=_o(ke),Hh=$o(ke),Jh=xo(ke),qh=ko(ke),Kh=So(ke),Xh=wo(ke),Gh=Io(ke),N=v("ZodType",(e,t)=>(C.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:vn(e,"input"),output:vn(e,"output")}}),e.toJSONSchema=Kf(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...i)=>e.clone(Ae(t,{checks:[...t.checks??[],...i.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0}),e.with=e.check,e.clone=(i,r)=>Te(e,i,r),e.brand=()=>e,e.register=((i,r)=>(i.add(e,r),e)),e.parse=(i,r)=>Lh(e,i,r,{callee:e.parse}),e.safeParse=(i,r)=>Zh(e,i,r),e.parseAsync=async(i,r)=>Fh(e,i,r,{callee:e.parseAsync}),e.safeParseAsync=async(i,r)=>Bh(e,i,r),e.spa=e.safeParseAsync,e.encode=(i,r)=>Wh(e,i,r),e.decode=(i,r)=>Vh(e,i,r),e.encodeAsync=async(i,r)=>Hh(e,i,r),e.decodeAsync=async(i,r)=>Jh(e,i,r),e.safeEncode=(i,r)=>qh(e,i,r),e.safeDecode=(i,r)=>Kh(e,i,r),e.safeEncodeAsync=async(i,r)=>Xh(e,i,r),e.safeDecodeAsync=async(i,r)=>Gh(e,i,r),e.refine=(i,r)=>e.check(is(i,r)),e.superRefine=i=>e.check(rs(i)),e.overwrite=i=>e.check(Je(i)),e.optional=()=>yn(e),e.exactOptional=()=>Ra(e),e.nullable=()=>_n(e),e.nullish=()=>yn(_n(e)),e.nonoptional=i=>Va(e,i),e.array=()=>ue(e),e.or=i=>qt([e,i]),e.and=i=>Da(e,i),e.transform=i=>$n(e,kr(i)),e.default=i=>Za(e,i),e.prefault=i=>Wa(e,i),e.catch=i=>qa(e,i),e.pipe=i=>$n(e,i),e.readonly=()=>Ga(e),e.describe=i=>{const r=e.clone();return we.add(r,{description:i}),r},Object.defineProperty(e,"description",{get(){return we.get(e)?.description},configurable:!0}),e.meta=(...i)=>{if(i.length===0)return we.get(e);const r=e.clone();return we.add(r,i[0]),r},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=i=>i(e),e)),ir=v("_ZodString",(e,t)=>{An.init(e,t),N.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Xf(e,r,n);const i=e._zod.bag;e.format=i.format??null,e.minLength=i.minimum??null,e.maxLength=i.maximum??null,e.regex=(...r)=>e.check(Vi(...r)),e.includes=(...r)=>e.check(qi(...r)),e.startsWith=(...r)=>e.check(Ki(...r)),e.endsWith=(...r)=>e.check(Xi(...r)),e.min=(...r)=>e.check(_t(...r)),e.max=(...r)=>e.check(Rn(...r)),e.length=(...r)=>e.check(Ln(...r)),e.nonempty=(...r)=>e.check(_t(1,...r)),e.lowercase=r=>e.check(Hi(r)),e.uppercase=r=>e.check(Ji(r)),e.trim=()=>e.check(Qi()),e.normalize=(...r)=>e.check(Yi(...r)),e.toLowerCase=()=>e.check(er()),e.toUpperCase=()=>e.check(tr()),e.slugify=()=>e.check(nr())}),Zn=v("ZodString",(e,t)=>{An.init(e,t),ir.init(e,t),e.email=i=>e.check(Lo(rr,i)),e.url=i=>e.check(Wi(Bn,i)),e.jwt=i=>e.check(oa(yr,i)),e.emoji=i=>e.check(Vo(or,i)),e.guid=i=>e.check(wi(bn,i)),e.uuid=i=>e.check(Fo(Ce,i)),e.uuidv4=i=>e.check(Zo(Ce,i)),e.uuidv6=i=>e.check(Bo(Ce,i)),e.uuidv7=i=>e.check(Wo(Ce,i)),e.nanoid=i=>e.check(Ho(ar,i)),e.guid=i=>e.check(wi(bn,i)),e.cuid=i=>e.check(Jo(sr,i)),e.cuid2=i=>e.check(qo(cr,i)),e.ulid=i=>e.check(Ko(lr,i)),e.base64=i=>e.check(na(pr,i)),e.base64url=i=>e.check(ia(vr,i)),e.xid=i=>e.check(Xo(ur,i)),e.ksuid=i=>e.check(Go(dr,i)),e.ipv4=i=>e.check(Yo(fr,i)),e.ipv6=i=>e.check(Qo(hr,i)),e.cidrv4=i=>e.check(ea(mr,i)),e.cidrv6=i=>e.check(ta(gr,i)),e.e164=i=>e.check(ra(br,i)),e.datetime=i=>e.check(Mh(i)),e.date=i=>e.check(Ch(i)),e.time=i=>e.check(Uh(i)),e.duration=i=>e.check(Ah(i))});function D(e){return lf(Zn,e)}const K=v("ZodStringFormat",(e,t)=>{q.init(e,t),ir.init(e,t)}),rr=v("ZodEmail",(e,t)=>{Wu.init(e,t),K.init(e,t)});function Yh(e){return Lo(rr,e)}const bn=v("ZodGUID",(e,t)=>{Zu.init(e,t),K.init(e,t)});function Qh(e){return wi(bn,e)}const Ce=v("ZodUUID",(e,t)=>{Bu.init(e,t),K.init(e,t)});function em(e){return Fo(Ce,e)}function tm(e){return Zo(Ce,e)}function nm(e){return Bo(Ce,e)}function im(e){return Wo(Ce,e)}const Bn=v("ZodURL",(e,t)=>{Vu.init(e,t),K.init(e,t)});function rm(e){return Wi(Bn,e)}function om(e){return Wi(Bn,{protocol:/^https?$/,hostname:ou,...$(e)})}const or=v("ZodEmoji",(e,t)=>{Hu.init(e,t),K.init(e,t)});function am(e){return Vo(or,e)}const ar=v("ZodNanoID",(e,t)=>{Ju.init(e,t),K.init(e,t)});function sm(e){return Ho(ar,e)}const sr=v("ZodCUID",(e,t)=>{qu.init(e,t),K.init(e,t)});function cm(e){return Jo(sr,e)}const cr=v("ZodCUID2",(e,t)=>{Ku.init(e,t),K.init(e,t)});function lm(e){return qo(cr,e)}const lr=v("ZodULID",(e,t)=>{Xu.init(e,t),K.init(e,t)});function um(e){return Ko(lr,e)}const ur=v("ZodXID",(e,t)=>{Gu.init(e,t),K.init(e,t)});function dm(e){return Xo(ur,e)}const dr=v("ZodKSUID",(e,t)=>{Yu.init(e,t),K.init(e,t)});function fm(e){return Go(dr,e)}const fr=v("ZodIPv4",(e,t)=>{id.init(e,t),K.init(e,t)});function hm(e){return Yo(fr,e)}const va=v("ZodMAC",(e,t)=>{od.init(e,t),K.init(e,t)});function mm(e){return df(va,e)}const hr=v("ZodIPv6",(e,t)=>{rd.init(e,t),K.init(e,t)});function gm(e){return Qo(hr,e)}const mr=v("ZodCIDRv4",(e,t)=>{ad.init(e,t),K.init(e,t)});function pm(e){return ea(mr,e)}const gr=v("ZodCIDRv6",(e,t)=>{sd.init(e,t),K.init(e,t)});function vm(e){return ta(gr,e)}const pr=v("ZodBase64",(e,t)=>{cd.init(e,t),K.init(e,t)});function bm(e){return na(pr,e)}const vr=v("ZodBase64URL",(e,t)=>{ud.init(e,t),K.init(e,t)});function ym(e){return ia(vr,e)}const br=v("ZodE164",(e,t)=>{dd.init(e,t),K.init(e,t)});function _m(e){return ra(br,e)}const yr=v("ZodJWT",(e,t)=>{hd.init(e,t),K.init(e,t)});function $m(e){return oa(yr,e)}const Jt=v("ZodCustomStringFormat",(e,t)=>{md.init(e,t),K.init(e,t)});function xm(e,t,i={}){return Fn(Jt,e,t,i)}function km(e){return Fn(Jt,"hostname",ru,e)}function Sm(e){return Fn(Jt,"hex",_u,e)}function wm(e,t){const i=t?.enc??"hex",r=`${e}_${i}`,n=Oo[r];if(!n)throw new Error(`Unrecognized hash format: ${r}`);return Fn(Jt,r,n,t)}const Wn=v("ZodNumber",(e,t)=>{jo.init(e,t),N.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Gf(e,r,n),e.gt=(r,n)=>e.check(tt(r,n)),e.gte=(r,n)=>e.check(pe(r,n)),e.min=(r,n)=>e.check(pe(r,n)),e.lt=(r,n)=>e.check(et(r,n)),e.lte=(r,n)=>e.check(Ie(r,n)),e.max=(r,n)=>e.check(Ie(r,n)),e.int=r=>e.check(Ii(r)),e.safe=r=>e.check(Ii(r)),e.positive=r=>e.check(tt(0,r)),e.nonnegative=r=>e.check(pe(0,r)),e.negative=r=>e.check(et(0,r)),e.nonpositive=r=>e.check(Ie(0,r)),e.multipleOf=(r,n)=>e.check(At(r,n)),e.step=(r,n)=>e.check(At(r,n)),e.finite=()=>e;const i=e._zod.bag;e.minValue=Math.max(i.minimum??Number.NEGATIVE_INFINITY,i.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(i.maximum??Number.POSITIVE_INFINITY,i.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(i.format??"").includes("int")||Number.isSafeInteger(i.multipleOf??.5),e.isFinite=!0,e.format=i.format??null});function P(e){return vf(Wn,e)}const kt=v("ZodNumberFormat",(e,t)=>{gd.init(e,t),Wn.init(e,t)});function Ii(e){return yf(kt,e)}function Im(e){return _f(kt,e)}function zm(e){return $f(kt,e)}function Tm(e){return xf(kt,e)}function Om(e){return kf(kt,e)}const Vn=v("ZodBoolean",(e,t)=>{Mo.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Yf(e,i,r)});function Et(e){return Sf(Vn,e)}const Hn=v("ZodBigInt",(e,t)=>{Co.init(e,t),N.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Qf(e,r),e.gte=(r,n)=>e.check(pe(r,n)),e.min=(r,n)=>e.check(pe(r,n)),e.gt=(r,n)=>e.check(tt(r,n)),e.gte=(r,n)=>e.check(pe(r,n)),e.min=(r,n)=>e.check(pe(r,n)),e.lt=(r,n)=>e.check(et(r,n)),e.lte=(r,n)=>e.check(Ie(r,n)),e.max=(r,n)=>e.check(Ie(r,n)),e.positive=r=>e.check(tt(BigInt(0),r)),e.negative=r=>e.check(et(BigInt(0),r)),e.nonpositive=r=>e.check(Ie(BigInt(0),r)),e.nonnegative=r=>e.check(pe(BigInt(0),r)),e.multipleOf=(r,n)=>e.check(At(r,n));const i=e._zod.bag;e.minValue=i.minimum??null,e.maxValue=i.maximum??null,e.format=i.format??null});function Dm(e){return If(Hn,e)}const _r=v("ZodBigIntFormat",(e,t)=>{pd.init(e,t),Hn.init(e,t)});function Pm(e){return Tf(_r,e)}function Em(e){return Of(_r,e)}const ba=v("ZodSymbol",(e,t)=>{vd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>eh(e,i)});function jm(e){return Df(ba,e)}const ya=v("ZodUndefined",(e,t)=>{bd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>nh(e,i)});function Mm(e){return Pf(ya,e)}const _a=v("ZodNull",(e,t)=>{yd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>th(e,i,r)});function $a(e){return Ef(_a,e)}const xa=v("ZodAny",(e,t)=>{_d.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>oh()});function zi(){return jf(xa)}const ka=v("ZodUnknown",(e,t)=>{$d.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>ah()});function He(){return Mf(ka)}const Sa=v("ZodNever",(e,t)=>{xd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>rh(e,i,r)});function $r(e){return Cf(Sa,e)}const wa=v("ZodVoid",(e,t)=>{kd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>ih(e,i)});function Cm(e){return Uf(wa,e)}const xr=v("ZodDate",(e,t)=>{Sd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(r,n,o)=>sh(e,r),e.min=(r,n)=>e.check(pe(r,n)),e.max=(r,n)=>e.check(Ie(r,n));const i=e._zod.bag;e.minDate=i.minimum?new Date(i.minimum):null,e.maxDate=i.maximum?new Date(i.maximum):null});function Um(e){return Af(xr,e)}const Ia=v("ZodArray",(e,t)=>{wd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>yh(e,i,r,n),e.element=t.element,e.min=(i,r)=>e.check(_t(i,r)),e.nonempty=i=>e.check(_t(1,i)),e.max=(i,r)=>e.check(Rn(i,r)),e.length=(i,r)=>e.check(Ln(i,r)),e.unwrap=()=>e.element});function ue(e,t){return Lf(Ia,e,t)}function Am(e){const t=e._zod.def.shape;return Xn(Object.keys(t))}const Jn=v("ZodObject",(e,t)=>{Od.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>_h(e,i,r,n),L(e,"shape",()=>t.shape),e.keyof=()=>Xn(Object.keys(e._zod.def.shape)),e.catchall=i=>e.clone({...e._zod.def,catchall:i}),e.passthrough=()=>e.clone({...e._zod.def,catchall:He()}),e.loose=()=>e.clone({...e._zod.def,catchall:He()}),e.strict=()=>e.clone({...e._zod.def,catchall:$r()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=i=>zl(e,i),e.safeExtend=i=>Tl(e,i),e.merge=i=>Ol(e,i),e.pick=i=>wl(e,i),e.omit=i=>Il(e,i),e.partial=(...i)=>Dl(Sr,e,i[0]),e.required=(...i)=>Pl(wr,e,i[0])});function Nm(e,t){const i={type:"object",shape:e??{},...$(t)};return new Jn(i)}function te(e,t){return new Jn({type:"object",shape:e,catchall:$r(),...$(t)})}function Rm(e,t){return new Jn({type:"object",shape:e,catchall:He(),...$(t)})}const qn=v("ZodUnion",(e,t)=>{Bi.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>da(e,i,r,n),e.options=t.options});function qt(e,t){return new qn({type:"union",options:e,...$(t)})}const za=v("ZodXor",(e,t)=>{qn.init(e,t),Dd.init(e,t),e._zod.processJSONSchema=(i,r,n)=>da(e,i,r,n),e.options=t.options});function Lm(e,t){return new za({type:"union",options:e,inclusive:!1,...$(t)})}const Ta=v("ZodDiscriminatedUnion",(e,t)=>{qn.init(e,t),Pd.init(e,t)});function Fm(e,t,i){return new Ta({type:"union",options:t,discriminator:e,...$(i)})}const Oa=v("ZodIntersection",(e,t)=>{Ed.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>$h(e,i,r,n)});function Da(e,t){return new Oa({type:"intersection",left:e,right:t})}const Pa=v("ZodTuple",(e,t)=>{Uo.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>xh(e,i,r,n),e.rest=i=>e.clone({...e._zod.def,rest:i})});function Ea(e,t,i){const r=t instanceof C,n=r?i:t,o=r?t:null;return new Pa({type:"tuple",items:e,rest:o,...$(n)})}const Kn=v("ZodRecord",(e,t)=>{jd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>kh(e,i,r,n),e.keyType=t.keyType,e.valueType=t.valueType});function Ke(e,t,i){return new Kn({type:"record",keyType:e,valueType:t,...$(i)})}function Zm(e,t,i){const r=Te(e);return r._zod.values=void 0,new Kn({type:"record",keyType:r,valueType:t,...$(i)})}function Bm(e,t,i){return new Kn({type:"record",keyType:e,valueType:t,mode:"loose",...$(i)})}const ja=v("ZodMap",(e,t)=>{Md.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>vh(e,i),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...i)=>e.check(nt(...i)),e.nonempty=i=>e.check(nt(1,i)),e.max=(...i)=>e.check(Ht(...i)),e.size=(...i)=>e.check(Nn(...i))});function Wm(e,t,i){return new ja({type:"map",keyType:e,valueType:t,...$(i)})}const Ma=v("ZodSet",(e,t)=>{Cd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>bh(e,i),e.min=(...i)=>e.check(nt(...i)),e.nonempty=i=>e.check(nt(1,i)),e.max=(...i)=>e.check(Ht(...i)),e.size=(...i)=>e.check(Nn(...i))});function Vm(e,t){return new Ma({type:"set",valueType:e,...$(t)})}const Ft=v("ZodEnum",(e,t)=>{Ud.init(e,t),N.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ch(e,r,n),e.enum=t.entries,e.options=Object.values(t.entries);const i=new Set(Object.keys(t.entries));e.extract=(r,n)=>{const o={};for(const a of r)if(i.has(a))o[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Ft({...t,checks:[],...$(n),entries:o})},e.exclude=(r,n)=>{const o={...t.entries};for(const a of r)if(i.has(a))delete o[a];else throw new Error(`Key ${a} not found in enum`);return new Ft({...t,checks:[],...$(n),entries:o})}});function Xn(e,t){const i=Array.isArray(e)?Object.fromEntries(e.map(r=>[r,r])):e;return new Ft({type:"enum",entries:i,...$(t)})}function Hm(e,t){return new Ft({type:"enum",entries:e,...$(t)})}const Ca=v("ZodLiteral",(e,t)=>{Ad.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>lh(e,i,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function dn(e,t){return new Ca({type:"literal",values:Array.isArray(e)?e:[e],...$(t)})}const Ua=v("ZodFile",(e,t)=>{Nd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>fh(e,i,r),e.min=(i,r)=>e.check(nt(i,r)),e.max=(i,r)=>e.check(Ht(i,r)),e.mime=(i,r)=>e.check(Gi(Array.isArray(i)?i:[i],r))});function Jm(e){return Ff(Ua,e)}const Aa=v("ZodTransform",(e,t)=>{Rd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>ph(e,i),e._zod.parse=(i,r)=>{if(r.direction==="backward")throw new Ni(e.constructor.name);i.addIssue=o=>{if(typeof o=="string")i.issues.push(Ct(o,i.value,t));else{const a=o;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=i.value),a.inst??(a.inst=e),i.issues.push(Ct(a))}};const n=t.transform(i.value,i);return n instanceof Promise?n.then(o=>(i.value=o,i)):(i.value=n,i)}});function kr(e){return new Aa({type:"transform",transform:e})}const Sr=v("ZodOptional",(e,t)=>{Ao.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>fa(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function yn(e){return new Sr({type:"optional",innerType:e})}const Na=v("ZodExactOptional",(e,t)=>{Ld.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>fa(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function Ra(e){return new Na({type:"optional",innerType:e})}const La=v("ZodNullable",(e,t)=>{Fd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Sh(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function _n(e){return new La({type:"nullable",innerType:e})}function qm(e){return yn(_n(e))}const Fa=v("ZodDefault",(e,t)=>{Zd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Ih(e,i,r,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Za(e,t){return new Fa({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():Li(t)}})}const Ba=v("ZodPrefault",(e,t)=>{Bd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>zh(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function Wa(e,t){return new Ba({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():Li(t)}})}const wr=v("ZodNonOptional",(e,t)=>{Wd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>wh(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function Va(e,t){return new wr({type:"nonoptional",innerType:e,...$(t)})}const Ha=v("ZodSuccess",(e,t)=>{Vd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>hh(e,i,r),e.unwrap=()=>e._zod.def.innerType});function Km(e){return new Ha({type:"success",innerType:e})}const Ja=v("ZodCatch",(e,t)=>{Hd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Th(e,i,r,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function qa(e,t){return new Ja({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Ka=v("ZodNaN",(e,t)=>{Jd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>uh(e,i)});function Xm(e){return Rf(Ka,e)}const Ir=v("ZodPipe",(e,t)=>{qd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Oh(e,i,r,n),e.in=t.in,e.out=t.out});function $n(e,t){return new Ir({type:"pipe",in:e,out:t})}const zr=v("ZodCodec",(e,t)=>{Ir.init(e,t),No.init(e,t)});function Gm(e,t,i){return new zr({type:"pipe",in:e,out:t,transform:i.decode,reverseTransform:i.encode})}const Xa=v("ZodReadonly",(e,t)=>{Kd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Dh(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function Ga(e){return new Xa({type:"readonly",innerType:e})}const Ya=v("ZodTemplateLiteral",(e,t)=>{Xd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>dh(e,i,r)});function Ym(e,t){return new Ya({type:"template_literal",parts:e,...$(t)})}const Qa=v("ZodLazy",(e,t)=>{Qd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Eh(e,i,r,n),e.unwrap=()=>e._zod.def.getter()});function es(e){return new Qa({type:"lazy",getter:e})}const ts=v("ZodPromise",(e,t)=>{Yd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>Ph(e,i,r,n),e.unwrap=()=>e._zod.def.innerType});function Qm(e){return new ts({type:"promise",innerType:e})}const ns=v("ZodFunction",(e,t)=>{Gd.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>gh(e,i)});function Ti(e){return new ns({type:"function",input:Array.isArray(e?.input)?Ea(e?.input):e?.input??ue(He()),output:e?.output??He()})}const Gn=v("ZodCustom",(e,t)=>{ef.init(e,t),N.init(e,t),e._zod.processJSONSchema=(i,r,n)=>mh(e,i)});function eg(e){const t=new Y({check:"custom"});return t._zod.check=e,t}function tg(e,t){return Zf(Gn,e??(()=>!0),t)}function is(e,t={}){return Bf(Gn,e,t)}function rs(e){return Wf(e)}const ng=Hf,ig=Jf;function rg(e,t={}){const i=new Gn({type:"custom",check:"custom",fn:r=>r instanceof e,abort:!0,...$(t)});return i._zod.bag.Class=e,i._zod.check=r=>{r.value instanceof e||r.issues.push({code:"invalid_type",expected:e.name,input:r.value,inst:i,path:[...i._zod.def.path??[]]})},i}const og=(...e)=>qf({Codec:zr,Boolean:Vn,String:Zn},...e);function ag(e){const t=es(()=>qt([D(e),P(),Et(),$a(),ue(t),Ke(D(),t)]));return t}function sg(e,t){return $n(kr(e),t)}const yy=Object.freeze(Object.defineProperty({__proto__:null,ZodAny:xa,ZodArray:Ia,ZodBase64:pr,ZodBase64URL:vr,ZodBigInt:Hn,ZodBigIntFormat:_r,ZodBoolean:Vn,ZodCIDRv4:mr,ZodCIDRv6:gr,ZodCUID:sr,ZodCUID2:cr,ZodCatch:Ja,ZodCodec:zr,ZodCustom:Gn,ZodCustomStringFormat:Jt,ZodDate:xr,ZodDefault:Fa,ZodDiscriminatedUnion:Ta,ZodE164:br,ZodEmail:rr,ZodEmoji:or,ZodEnum:Ft,ZodExactOptional:Na,ZodFile:Ua,ZodFunction:ns,ZodGUID:bn,ZodIPv4:fr,ZodIPv6:hr,ZodIntersection:Oa,ZodJWT:yr,ZodKSUID:dr,ZodLazy:Qa,ZodLiteral:Ca,ZodMAC:va,ZodMap:ja,ZodNaN:Ka,ZodNanoID:ar,ZodNever:Sa,ZodNonOptional:wr,ZodNull:_a,ZodNullable:La,ZodNumber:Wn,ZodNumberFormat:kt,ZodObject:Jn,ZodOptional:Sr,ZodPipe:Ir,ZodPrefault:Ba,ZodPromise:ts,ZodReadonly:Xa,ZodRecord:Kn,ZodSet:Ma,ZodString:Zn,ZodStringFormat:K,ZodSuccess:Ha,ZodSymbol:ba,ZodTemplateLiteral:Ya,ZodTransform:Aa,ZodTuple:Pa,ZodType:N,ZodULID:lr,ZodURL:Bn,ZodUUID:Ce,ZodUndefined:ya,ZodUnion:qn,ZodUnknown:ka,ZodVoid:wa,ZodXID:ur,ZodXor:za,_ZodString:ir,_default:Za,_function:Ti,any:zi,array:ue,base64:bm,base64url:ym,bigint:Dm,boolean:Et,catch:qa,check:eg,cidrv4:pm,cidrv6:vm,codec:Gm,cuid:cm,cuid2:lm,custom:tg,date:Um,describe:ng,discriminatedUnion:Fm,e164:_m,email:Yh,emoji:am,enum:Xn,exactOptional:Ra,file:Jm,float32:Im,float64:zm,function:Ti,guid:Qh,hash:wm,hex:Sm,hostname:km,httpUrl:om,instanceof:rg,int:Ii,int32:Tm,int64:Pm,intersection:Da,ipv4:hm,ipv6:gm,json:ag,jwt:$m,keyof:Am,ksuid:fm,lazy:es,literal:dn,looseObject:Rm,looseRecord:Bm,mac:mm,map:Wm,meta:ig,nan:Xm,nanoid:sm,nativeEnum:Hm,never:$r,nonoptional:Va,null:$a,nullable:_n,nullish:qm,number:P,object:Nm,optional:yn,partialRecord:Zm,pipe:$n,prefault:Wa,preprocess:sg,promise:Qm,readonly:Ga,record:Ke,refine:is,set:Vm,strictObject:te,string:D,stringFormat:xm,stringbool:og,success:Km,superRefine:rs,symbol:jm,templateLiteral:Ym,transform:kr,tuple:Ea,uint32:Om,uint64:Em,ulid:um,undefined:Mm,union:qt,unknown:He,url:rm,uuid:em,uuidv4:tm,uuidv6:nm,uuidv7:im,void:Cm,xid:dm,xor:Lm},Symbol.toStringTag,{value:"Module"})),_y={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function $y(e){de({customError:e})}function xy(){return de().customError}var io;io||(io={});const w={...yy,...vy,iso:Nh},ky=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function Sy(e,t){const i=e.$schema;return i==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":i==="http://json-schema.org/draft-07/schema#"?"draft-7":i==="http://json-schema.org/draft-04/schema#"?"draft-4":t??"draft-2020-12"}function wy(e,t){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");const i=e.slice(1).split("/").filter(Boolean);if(i.length===0)return t.rootSchema;const r=t.version==="draft-2020-12"?"$defs":"definitions";if(i[0]===r){const n=i[1];if(!n||!t.defs[n])throw new Error(`Reference not found: ${e}`);return t.defs[n]}throw new Error(`Reference not found: ${e}`)}function cg(e,t){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return w.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){const n=e.$ref;if(t.refs.has(n))return t.refs.get(n);if(t.processing.has(n))return w.lazy(()=>{if(!t.refs.has(n))throw new Error(`Circular reference not resolved: ${n}`);return t.refs.get(n)});t.processing.add(n);const o=wy(n,t),a=le(o,t);return t.refs.set(n,a),t.processing.delete(n),a}if(e.enum!==void 0){const n=e.enum;if(t.version==="openapi-3.0"&&e.nullable===!0&&n.length===1&&n[0]===null)return w.null();if(n.length===0)return w.never();if(n.length===1)return w.literal(n[0]);if(n.every(a=>typeof a=="string"))return w.enum(n);const o=n.map(a=>w.literal(a));return o.length<2?o[0]:w.union([o[0],o[1],...o.slice(2)])}if(e.const!==void 0)return w.literal(e.const);const i=e.type;if(Array.isArray(i)){const n=i.map(o=>{const a={...e,type:o};return cg(a,t)});return n.length===0?w.never():n.length===1?n[0]:w.union(n)}if(!i)return w.any();let r;switch(i){case"string":{let n=w.string();if(e.format){const o=e.format;o==="email"?n=n.check(w.email()):o==="uri"||o==="uri-reference"?n=n.check(w.url()):o==="uuid"||o==="guid"?n=n.check(w.uuid()):o==="date-time"?n=n.check(w.iso.datetime()):o==="date"?n=n.check(w.iso.date()):o==="time"?n=n.check(w.iso.time()):o==="duration"?n=n.check(w.iso.duration()):o==="ipv4"?n=n.check(w.ipv4()):o==="ipv6"?n=n.check(w.ipv6()):o==="mac"?n=n.check(w.mac()):o==="cidr"?n=n.check(w.cidrv4()):o==="cidr-v6"?n=n.check(w.cidrv6()):o==="base64"?n=n.check(w.base64()):o==="base64url"?n=n.check(w.base64url()):o==="e164"?n=n.check(w.e164()):o==="jwt"?n=n.check(w.jwt()):o==="emoji"?n=n.check(w.emoji()):o==="nanoid"?n=n.check(w.nanoid()):o==="cuid"?n=n.check(w.cuid()):o==="cuid2"?n=n.check(w.cuid2()):o==="ulid"?n=n.check(w.ulid()):o==="xid"?n=n.check(w.xid()):o==="ksuid"&&(n=n.check(w.ksuid()))}typeof e.minLength=="number"&&(n=n.min(e.minLength)),typeof e.maxLength=="number"&&(n=n.max(e.maxLength)),e.pattern&&(n=n.regex(new RegExp(e.pattern))),r=n;break}case"number":case"integer":{let n=i==="integer"?w.number().int():w.number();typeof e.minimum=="number"&&(n=n.min(e.minimum)),typeof e.maximum=="number"&&(n=n.max(e.maximum)),typeof e.exclusiveMinimum=="number"?n=n.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum=="number"&&(n=n.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?n=n.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum=="number"&&(n=n.lt(e.maximum)),typeof e.multipleOf=="number"&&(n=n.multipleOf(e.multipleOf)),r=n;break}case"boolean":{r=w.boolean();break}case"null":{r=w.null();break}case"object":{const n={},o=e.properties||{},a=new Set(e.required||[]);for(const[c,l]of Object.entries(o)){const u=le(l,t);n[c]=a.has(c)?u:u.optional()}if(e.propertyNames){const c=le(e.propertyNames,t),l=e.additionalProperties&&typeof e.additionalProperties=="object"?le(e.additionalProperties,t):w.any();if(Object.keys(n).length===0){r=w.record(c,l);break}const u=w.object(n).passthrough(),d=w.looseRecord(c,l);r=w.intersection(u,d);break}if(e.patternProperties){const c=e.patternProperties,l=Object.keys(c),u=[];for(const f of l){const h=le(c[f],t),g=w.string().regex(new RegExp(f));u.push(w.looseRecord(g,h))}const d=[];if(Object.keys(n).length>0&&d.push(w.object(n).passthrough()),d.push(...u),d.length===0)r=w.object({}).passthrough();else if(d.length===1)r=d[0];else{let f=w.intersection(d[0],d[1]);for(let h=2;h<d.length;h++)f=w.intersection(f,d[h]);r=f}break}const s=w.object(n);e.additionalProperties===!1?r=s.strict():typeof e.additionalProperties=="object"?r=s.catchall(le(e.additionalProperties,t)):r=s.passthrough();break}case"array":{const n=e.prefixItems,o=e.items;if(n&&Array.isArray(n)){const a=n.map(c=>le(c,t)),s=o&&typeof o=="object"&&!Array.isArray(o)?le(o,t):void 0;s?r=w.tuple(a).rest(s):r=w.tuple(a),typeof e.minItems=="number"&&(r=r.check(w.minLength(e.minItems))),typeof e.maxItems=="number"&&(r=r.check(w.maxLength(e.maxItems)))}else if(Array.isArray(o)){const a=o.map(c=>le(c,t)),s=e.additionalItems&&typeof e.additionalItems=="object"?le(e.additionalItems,t):void 0;s?r=w.tuple(a).rest(s):r=w.tuple(a),typeof e.minItems=="number"&&(r=r.check(w.minLength(e.minItems))),typeof e.maxItems=="number"&&(r=r.check(w.maxLength(e.maxItems)))}else if(o!==void 0){const a=le(o,t);let s=w.array(a);typeof e.minItems=="number"&&(s=s.min(e.minItems)),typeof e.maxItems=="number"&&(s=s.max(e.maxItems)),r=s}else r=w.array(w.any());break}default:throw new Error(`Unsupported type: ${i}`)}return e.description&&(r=r.describe(e.description)),e.default!==void 0&&(r=r.default(e.default)),r}function le(e,t){if(typeof e=="boolean")return e?w.any():w.never();let i=cg(e,t);const r=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){const s=e.anyOf.map(l=>le(l,t)),c=w.union(s);i=r?w.intersection(i,c):c}if(e.oneOf&&Array.isArray(e.oneOf)){const s=e.oneOf.map(l=>le(l,t)),c=w.xor(s);i=r?w.intersection(i,c):c}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)i=r?i:w.any();else{let s=r?i:le(e.allOf[0],t);const c=r?0:1;for(let l=c;l<e.allOf.length;l++)s=w.intersection(s,le(e.allOf[l],t));i=s}e.nullable===!0&&t.version==="openapi-3.0"&&(i=w.nullable(i)),e.readOnly===!0&&(i=w.readonly(i));const n={},o=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(const s of o)s in e&&(n[s]=e[s]);const a=["contentEncoding","contentMediaType","contentSchema"];for(const s of a)s in e&&(n[s]=e[s]);for(const s of Object.keys(e))ky.has(s)||(n[s]=e[s]);return Object.keys(n).length>0&&t.registry.add(i,n),i}function Iy(e,t){if(typeof e=="boolean")return e?w.any():w.never();const i=Sy(e,t?.defaultTarget),r=e.$defs||e.definitions||{},n={version:i,defs:r,refs:new Map,processing:new Set,rootSchema:e,registry:t?.registry??we};return le(e,n)}function zy(e){return uf(Zn,e)}function Ty(e){return bf(Wn,e)}function Oy(e){return wf(Vn,e)}function Dy(e){return zf(Hn,e)}function Py(e){return Nf(xr,e)}const Ey=Object.freeze(Object.defineProperty({__proto__:null,bigint:Dy,boolean:Oy,date:Py,number:Ty,string:zy},Symbol.toStringTag,{value:"Module"}));de(tf());const oi=Object.freeze(Object.defineProperty({__proto__:null,$brand:vl,$input:sf,$output:af,NEVER:pl,TimePrecision:ff,ZodAny:xa,ZodArray:Ia,ZodBase64:pr,ZodBase64URL:vr,ZodBigInt:Hn,ZodBigIntFormat:_r,ZodBoolean:Vn,ZodCIDRv4:mr,ZodCIDRv6:gr,ZodCUID:sr,ZodCUID2:cr,ZodCatch:Ja,ZodCodec:zr,ZodCustom:Gn,ZodCustomStringFormat:Jt,ZodDate:xr,ZodDefault:Fa,ZodDiscriminatedUnion:Ta,ZodE164:br,ZodEmail:rr,ZodEmoji:or,ZodEnum:Ft,ZodError:by,ZodExactOptional:Na,ZodFile:Ua,get ZodFirstPartyTypeKind(){return io},ZodFunction:ns,ZodGUID:bn,ZodIPv4:fr,ZodIPv6:hr,ZodISODate:ma,ZodISODateTime:ha,ZodISODuration:pa,ZodISOTime:ga,ZodIntersection:Oa,ZodIssueCode:_y,ZodJWT:yr,ZodKSUID:dr,ZodLazy:Qa,ZodLiteral:Ca,ZodMAC:va,ZodMap:ja,ZodNaN:Ka,ZodNanoID:ar,ZodNever:Sa,ZodNonOptional:wr,ZodNull:_a,ZodNullable:La,ZodNumber:Wn,ZodNumberFormat:kt,ZodObject:Jn,ZodOptional:Sr,ZodPipe:Ir,ZodPrefault:Ba,ZodPromise:ts,ZodReadonly:Xa,ZodRealError:ke,ZodRecord:Kn,ZodSet:Ma,ZodString:Zn,ZodStringFormat:K,ZodSuccess:Ha,ZodSymbol:ba,ZodTemplateLiteral:Ya,ZodTransform:Aa,ZodTuple:Pa,ZodType:N,ZodULID:lr,ZodURL:Bn,ZodUUID:Ce,ZodUndefined:ya,ZodUnion:qn,ZodUnknown:ka,ZodVoid:wa,ZodXID:ur,ZodXor:za,_ZodString:ir,_default:Za,_function:Ti,any:zi,array:ue,base64:bm,base64url:ym,bigint:Dm,boolean:Et,catch:qa,check:eg,cidrv4:pm,cidrv6:vm,clone:Te,codec:Gm,coerce:Ey,config:de,core:py,cuid:cm,cuid2:lm,custom:tg,date:Um,decode:Vh,decodeAsync:Jh,describe:ng,discriminatedUnion:Fm,e164:_m,email:Yh,emoji:am,encode:Wh,encodeAsync:Hh,endsWith:Xi,enum:Xn,exactOptional:Ra,file:Jm,flattenError:vo,float32:Im,float64:zm,formatError:bo,fromJSONSchema:Iy,function:Ti,getErrorMap:xy,globalRegistry:we,gt:tt,gte:pe,guid:Qh,hash:wm,hex:Sm,hostname:km,httpUrl:om,includes:qi,instanceof:rg,int:Ii,int32:Tm,int64:Pm,intersection:Da,ipv4:hm,ipv6:gm,iso:Nh,json:ag,jwt:$m,keyof:Am,ksuid:fm,lazy:es,length:Ln,literal:dn,locales:of,looseObject:Rm,looseRecord:Bm,lowercase:Hi,lt:et,lte:Ie,mac:mm,map:Wm,maxLength:Rn,maxSize:Ht,meta:ig,mime:Gi,minLength:_t,minSize:nt,multipleOf:At,nan:Xm,nanoid:sm,nativeEnum:Hm,negative:sa,never:$r,nonnegative:la,nonoptional:Va,nonpositive:ca,normalize:Yi,null:$a,nullable:_n,nullish:qm,number:P,object:Nm,optional:yn,overwrite:Je,parse:Lh,parseAsync:Fh,partialRecord:Zm,pipe:$n,positive:aa,prefault:Wa,preprocess:sg,prettifyError:Nl,promise:Qm,property:ua,readonly:Ga,record:Ke,refine:is,regex:Vi,regexes:Oo,registry:Ro,safeDecode:Kh,safeDecodeAsync:Gh,safeEncode:qh,safeEncodeAsync:Xh,safeParse:Zh,safeParseAsync:Bh,set:Vm,setErrorMap:$y,size:Nn,slugify:nr,startsWith:Ki,strictObject:te,string:D,stringFormat:xm,stringbool:og,success:Km,superRefine:rs,symbol:jm,templateLiteral:Ym,toJSONSchema:jh,toLowerCase:er,toUpperCase:tr,transform:kr,treeifyError:Ul,trim:Qi,tuple:Ea,uint32:Om,uint64:Em,ulid:um,undefined:Mm,union:qt,unknown:He,uppercase:Ji,url:rm,util:Ml,uuid:em,uuidv4:tm,uuidv6:nm,uuidv7:im,void:Cm,xid:dm,xor:Lm},Symbol.toStringTag,{value:"Module"})),jy=oi.strictObject({route:oi.string(),directoryPath:oi.string(),spaFallback:oi.boolean().optional()}),My=qt([dn("error"),dn("info"),dn("warning")]),Cy=te({timestamp:D(),type:My,message:D(),req:te({method:D().optional(),url:D().optional(),ip:D().optional(),userAgent:D().optional()}).optional(),details:te({fullMessage:D().optional(),sql:D().optional(),bind:He().optional(),environment:Ke(D(),D()).optional()}).optional()}),Zs=te({size:P(),hits:P(),misses:P()}),lg=te({procedureName:Zs,argument:Zs}),Uy=te({totalRequests:P(),totalTimeouts:P(),totalRequestsEnqueued:P().optional(),totalRequestsDequeued:P().optional(),totalRequestsFailed:P().optional()}),Ay=te({name:D(),connectionsInUse:P(),connectionsOpen:P(),stats:Uy.nullable(),cache:lg.optional()}),Ny=te({requestCount:P(),errorCount:P(),avgResponseTime:P(),minResponseTime:P(),maxResponseTime:P(),maxRequestsPerSecond:P()}),ug=te({timestamp:P(),requests:P(),errors:P(),durationMin:P(),durationMax:P(),durationAvg:P(),durationP95:P(),durationP99:P(),system:te({cpu:P(),heapUsed:P(),heapTotal:P(),rss:P(),external:P()}),pools:ue(te({name:D(),connectionsInUse:P(),connectionsOpen:P(),cache:lg.optional()}))}),Ry=te({route:D(),user:D().optional(),password:D().optional(),connectString:D().optional(),defaultPage:D().optional(),pathAlias:D().optional(),pathAliasProcedure:D().optional(),documentTable:D().optional(),exclusionList:ue(D()).optional(),requestValidationFunction:D().optional(),transactionMode:He().optional(),errorStyle:D().optional(),directoryPath:D().optional(),hasAuth:Et().optional(),hasTransactionMode:Et().optional(),hasCgi:Et().optional()}),Ly=te({port:P(),adminRoute:D().optional(),adminUser:D().optional(),adminPassword:D().optional(),loggerFilename:D(),uploadFileSizeLimit:P().optional(),routePlSql:ue(Ry),routeStatic:ue(jy)}),Fy=te({nodeVersion:D(),platform:D(),arch:D(),cpuCores:P().optional(),memory:te({rss:P(),heapTotal:P(),heapUsed:P(),external:P(),totalMemory:P().optional(),rssMax:P().optional(),heapTotalMax:P().optional(),heapUsedMax:P().optional(),externalMax:P().optional()}),cpu:te({user:P(),system:P(),max:P().optional(),userMax:P().optional(),systemMax:P().optional()})}),Zy=te({version:D(),status:Xn(["running","paused","stopped"]),uptime:P(),startTime:D(),intervalMs:P().optional(),metrics:Ny,history:ue(ug).optional(),pools:ue(Ay),system:Fy,config:Ly.partial().nullable().optional()}),By=qt([ue(D()),te({message:D()})]),Wy=te({id:D(),timestamp:D(),source:D(),url:D(),method:D(),status:D(),duration:P(),procedure:D().optional(),parameters:Ke(D(),zi()).optional(),uploads:ue(zi()).optional(),downloads:te({fileType:D(),fileSize:P()}).optional(),html:D().optional(),cookies:Ke(D(),D()).optional(),headers:Ke(D(),D()).optional(),cgi:Ke(D(),D()).optional(),error:D().optional()});function en(e,t,i){const r=t.safeParse(e);if(!r.success)throw new Error(`Validation failed for ${i}: ${r.error.message}`);return r.data}async function Ne(e,t,i=2,r=500){for(let n=0;n<=i;n++)try{return await fetch(e,t)}catch(o){if(n===i)throw o;await new Promise(a=>setTimeout(a,r))}throw new Error("Unreachable")}const $e={async getStatus(e=!1,t=!1){const i=await Ne(`api/status?history=${e}&config=${t}`);if(!i.ok)throw new Error(`GET api/status failed: ${i.statusText}`);const r=await i.json();return en(r,Zy,"api/status")},async getStatsHistory(e=100){const t=new URLSearchParams({limit:e.toString()}),i=await Ne(`api/stats/history?${t.toString()}`);if(!i.ok)throw new Error(`GET api/stats/history failed: ${i.statusText}`);const r=await i.json();return en(r,ue(ug),"api/stats/history")},async getErrorLogs(e=100,t=""){const i=new URLSearchParams({limit:e.toString(),filter:t}),r=await Ne(`api/logs/error?${i.toString()}`);if(!r.ok)throw new Error(`GET api/logs/error failed: ${r.statusText}`);const n=await r.json();return en(n,ue(Cy),"api/logs/error")},async getAccessLogs(e=100,t=""){const i=new URLSearchParams({limit:e.toString(),filter:t}),r=await Ne(`api/logs/access?${i.toString()}`);if(!r.ok)throw new Error(`GET api/logs/access failed: ${r.statusText}`);const n=await r.json();return en(n,By,"api/logs/access")},async getTraceLogs(e=100,t=""){const i=new URLSearchParams({limit:e.toString(),filter:t}),r=await Ne(`api/trace/logs?${i.toString()}`);if(!r.ok)throw new Error(`GET api/trace/logs failed: ${r.statusText}`);const n=await r.json();return en(n,ue(Wy),"api/trace/logs")},async getTraceStatus(){const e=await Ne("api/trace/status");if(!e.ok)throw new Error(`GET api/trace/status failed: ${e.statusText}`);return await e.json()},async toggleTrace(e){const t=await Ne("api/trace/toggle",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:e})});if(!t.ok)throw new Error(`POST api/trace/toggle failed: ${t.statusText}`);return await t.json()},async clearTraces(){const e=await Ne("api/trace/clear",{method:"POST"});if(!e.ok)throw new Error(`POST api/trace/clear failed: ${e.statusText}`)},async post(e,t={}){const i=await Ne(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`POST ${e} failed: ${i.statusText}`)}};function Yn(e){return e+.5|0}const Xe=(e,t,i)=>Math.max(Math.min(e,i),t);function cn(e){return Xe(Yn(e*2.55),0,255)}function Qe(e){return Xe(Yn(e*255),0,255)}function Ze(e){return Xe(Yn(e/2.55)/100,0,1)}function Bs(e){return Xe(Yn(e*100),0,100)}const Se={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},ro=[..."0123456789ABCDEF"],Vy=e=>ro[e&15],Hy=e=>ro[(e&240)>>4]+ro[e&15],ai=e=>(e&240)>>4===(e&15),Jy=e=>ai(e.r)&&ai(e.g)&&ai(e.b)&&ai(e.a);function qy(e){var t=e.length,i;return e[0]==="#"&&(t===4||t===5?i={r:255&Se[e[1]]*17,g:255&Se[e[2]]*17,b:255&Se[e[3]]*17,a:t===5?Se[e[4]]*17:255}:(t===7||t===9)&&(i={r:Se[e[1]]<<4|Se[e[2]],g:Se[e[3]]<<4|Se[e[4]],b:Se[e[5]]<<4|Se[e[6]],a:t===9?Se[e[7]]<<4|Se[e[8]]:255})),i}const Ky=(e,t)=>e<255?t(e):"";function Xy(e){var t=Jy(e)?Vy:Hy;return e?"#"+t(e.r)+t(e.g)+t(e.b)+Ky(e.a,t):void 0}const Gy=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function dg(e,t,i){const r=t*Math.min(i,1-i),n=(o,a=(o+e/30)%12)=>i-r*Math.max(Math.min(a-3,9-a,1),-1);return[n(0),n(8),n(4)]}function Yy(e,t,i){const r=(n,o=(n+e/60)%6)=>i-i*t*Math.max(Math.min(o,4-o,1),0);return[r(5),r(3),r(1)]}function Qy(e,t,i){const r=dg(e,1,.5);let n;for(t+i>1&&(n=1/(t+i),t*=n,i*=n),n=0;n<3;n++)r[n]*=1-t-i,r[n]+=t;return r}function e_(e,t,i,r,n){return e===n?(t-i)/r+(t<i?6:0):t===n?(i-e)/r+2:(e-t)/r+4}function os(e){const i=e.r/255,r=e.g/255,n=e.b/255,o=Math.max(i,r,n),a=Math.min(i,r,n),s=(o+a)/2;let c,l,u;return o!==a&&(u=o-a,l=s>.5?u/(2-o-a):u/(o+a),c=e_(i,r,n,u,o),c=c*60+.5),[c|0,l||0,s]}function as(e,t,i,r){return(Array.isArray(t)?e(t[0],t[1],t[2]):e(t,i,r)).map(Qe)}function ss(e,t,i){return as(dg,e,t,i)}function t_(e,t,i){return as(Qy,e,t,i)}function n_(e,t,i){return as(Yy,e,t,i)}function fg(e){return(e%360+360)%360}function i_(e){const t=Gy.exec(e);let i=255,r;if(!t)return;t[5]!==r&&(i=t[6]?cn(+t[5]):Qe(+t[5]));const n=fg(+t[2]),o=+t[3]/100,a=+t[4]/100;return t[1]==="hwb"?r=t_(n,o,a):t[1]==="hsv"?r=n_(n,o,a):r=ss(n,o,a),{r:r[0],g:r[1],b:r[2],a:i}}function r_(e,t){var i=os(e);i[0]=fg(i[0]+t),i=ss(i),e.r=i[0],e.g=i[1],e.b=i[2]}function o_(e){if(!e)return;const t=os(e),i=t[0],r=Bs(t[1]),n=Bs(t[2]);return e.a<255?`hsla(${i}, ${r}%, ${n}%, ${Ze(e.a)})`:`hsl(${i}, ${r}%, ${n}%)`}const Ws={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Vs={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function a_(){const e={},t=Object.keys(Vs),i=Object.keys(Ws);let r,n,o,a,s;for(r=0;r<t.length;r++){for(a=s=t[r],n=0;n<i.length;n++)o=i[n],s=s.replace(o,Ws[o]);o=parseInt(Vs[a],16),e[s]=[o>>16&255,o>>8&255,o&255]}return e}let si;function s_(e){si||(si=a_(),si.transparent=[0,0,0,0]);const t=si[e.toLowerCase()];return t&&{r:t[0],g:t[1],b:t[2],a:t.length===4?t[3]:255}}const c_=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function l_(e){const t=c_.exec(e);let i=255,r,n,o;if(t){if(t[7]!==r){const a=+t[7];i=t[8]?cn(a):Xe(a*255,0,255)}return r=+t[1],n=+t[3],o=+t[5],r=255&(t[2]?cn(r):Xe(r,0,255)),n=255&(t[4]?cn(n):Xe(n,0,255)),o=255&(t[6]?cn(o):Xe(o,0,255)),{r,g:n,b:o,a:i}}}function u_(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${Ze(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}const Ur=e=>e<=.0031308?e*12.92:Math.pow(e,1/2.4)*1.055-.055,Ot=e=>e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4);function d_(e,t,i){const r=Ot(Ze(e.r)),n=Ot(Ze(e.g)),o=Ot(Ze(e.b));return{r:Qe(Ur(r+i*(Ot(Ze(t.r))-r))),g:Qe(Ur(n+i*(Ot(Ze(t.g))-n))),b:Qe(Ur(o+i*(Ot(Ze(t.b))-o))),a:e.a+i*(t.a-e.a)}}function ci(e,t,i){if(e){let r=os(e);r[t]=Math.max(0,Math.min(r[t]+r[t]*i,t===0?360:1)),r=ss(r),e.r=r[0],e.g=r[1],e.b=r[2]}}function hg(e,t){return e&&Object.assign(t||{},e)}function Hs(e){var t={r:0,g:0,b:0,a:255};return Array.isArray(e)?e.length>=3&&(t={r:e[0],g:e[1],b:e[2],a:255},e.length>3&&(t.a=Qe(e[3]))):(t=hg(e,{r:0,g:0,b:0,a:1}),t.a=Qe(t.a)),t}function f_(e){return e.charAt(0)==="r"?l_(e):i_(e)}class xn{constructor(t){if(t instanceof xn)return t;const i=typeof t;let r;i==="object"?r=Hs(t):i==="string"&&(r=qy(t)||s_(t)||f_(t)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var t=hg(this._rgb);return t&&(t.a=Ze(t.a)),t}set rgb(t){this._rgb=Hs(t)}rgbString(){return this._valid?u_(this._rgb):void 0}hexString(){return this._valid?Xy(this._rgb):void 0}hslString(){return this._valid?o_(this._rgb):void 0}mix(t,i){if(t){const r=this.rgb,n=t.rgb;let o;const a=i===o?.5:i,s=2*a-1,c=r.a-n.a,l=((s*c===-1?s:(s+c)/(1+s*c))+1)/2;o=1-l,r.r=255&l*r.r+o*n.r+.5,r.g=255&l*r.g+o*n.g+.5,r.b=255&l*r.b+o*n.b+.5,r.a=a*r.a+(1-a)*n.a,this.rgb=r}return this}interpolate(t,i){return t&&(this._rgb=d_(this._rgb,t._rgb,i)),this}clone(){return new xn(this.rgb)}alpha(t){return this._rgb.a=Qe(t),this}clearer(t){const i=this._rgb;return i.a*=1-t,this}greyscale(){const t=this._rgb,i=Yn(t.r*.3+t.g*.59+t.b*.11);return t.r=t.g=t.b=i,this}opaquer(t){const i=this._rgb;return i.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return ci(this._rgb,2,t),this}darken(t){return ci(this._rgb,2,-t),this}saturate(t){return ci(this._rgb,1,t),this}desaturate(t){return ci(this._rgb,1,-t),this}rotate(t){return r_(this._rgb,t),this}}function Re(){}const h_=(()=>{let e=0;return()=>e++})();function X(e){return e==null}function ae(e){if(Array.isArray&&Array.isArray(e))return!0;const t=Object.prototype.toString.call(e);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function B(e){return e!==null&&Object.prototype.toString.call(e)==="[object Object]"}function fe(e){return(typeof e=="number"||e instanceof Number)&&isFinite(+e)}function Ee(e,t){return fe(e)?e:t}function Z(e,t){return typeof e>"u"?t:e}const m_=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100:+e/t,mg=(e,t)=>typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*t:+e;function G(e,t,i){if(e&&typeof e.call=="function")return e.apply(i,t)}function V(e,t,i,r){let n,o,a;if(ae(e))for(o=e.length,n=0;n<o;n++)t.call(i,e[n],n);else if(B(e))for(a=Object.keys(e),o=a.length,n=0;n<o;n++)t.call(i,e[a[n]],a[n])}function Oi(e,t){let i,r,n,o;if(!e||!t||e.length!==t.length)return!1;for(i=0,r=e.length;i<r;++i)if(n=e[i],o=t[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function Di(e){if(ae(e))return e.map(Di);if(B(e)){const t=Object.create(null),i=Object.keys(e),r=i.length;let n=0;for(;n<r;++n)t[i[n]]=Di(e[i[n]]);return t}return e}function gg(e){return["__proto__","prototype","constructor"].indexOf(e)===-1}function g_(e,t,i,r){if(!gg(e))return;const n=t[e],o=i[e];B(n)&&B(o)?kn(n,o,r):t[e]=Di(o)}function kn(e,t,i){const r=ae(t)?t:[t],n=r.length;if(!B(e))return e;i=i||{};const o=i.merger||g_;let a;for(let s=0;s<n;++s){if(a=r[s],!B(a))continue;const c=Object.keys(a);for(let l=0,u=c.length;l<u;++l)o(c[l],e,a,i)}return e}function fn(e,t){return kn(e,t,{merger:p_})}function p_(e,t,i){if(!gg(e))return;const r=t[e],n=i[e];B(r)&&B(n)?fn(r,n):Object.prototype.hasOwnProperty.call(t,e)||(t[e]=Di(n))}const Js={"":e=>e,x:e=>e.x,y:e=>e.y};function v_(e){const t=e.split("."),i=[];let r="";for(const n of t)r+=n,r.endsWith("\\")?r=r.slice(0,-1)+".":(i.push(r),r="");return i}function b_(e){const t=v_(e);return i=>{for(const r of t){if(r==="")break;i=i&&i[r]}return i}}function Sn(e,t){return(Js[t]||(Js[t]=b_(t)))(e)}function cs(e){return e.charAt(0).toUpperCase()+e.slice(1)}const Pi=e=>typeof e<"u",it=e=>typeof e=="function",qs=(e,t)=>{if(e.size!==t.size)return!1;for(const i of e)if(!t.has(i))return!1;return!0};function y_(e){return e.type==="mouseup"||e.type==="click"||e.type==="contextmenu"}const J=Math.PI,ee=2*J,__=ee+J,Ei=Number.POSITIVE_INFINITY,$_=J/180,oe=J/2,lt=J/4,Ks=J*2/3,pg=Math.log10,Zt=Math.sign;function hn(e,t,i){return Math.abs(e-t)<i}function Xs(e){const t=Math.round(e);e=hn(e,t,e/1e3)?t:e;const i=Math.pow(10,Math.floor(pg(e))),r=e/i;return(r<=1?1:r<=2?2:r<=5?5:10)*i}function x_(e){const t=[],i=Math.sqrt(e);let r;for(r=1;r<i;r++)e%r===0&&(t.push(r),t.push(e/r));return i===(i|0)&&t.push(i),t.sort((n,o)=>n-o).pop(),t}function k_(e){return typeof e=="symbol"||typeof e=="object"&&e!==null&&!(Symbol.toPrimitive in e||"toString"in e||"valueOf"in e)}function wn(e){return!k_(e)&&!isNaN(parseFloat(e))&&isFinite(e)}function S_(e,t){const i=Math.round(e);return i-t<=e&&i+t>=e}function w_(e,t,i){let r,n,o;for(r=0,n=e.length;r<n;r++)o=e[r][i],isNaN(o)||(t.min=Math.min(t.min,o),t.max=Math.max(t.max,o))}function Be(e){return e*(J/180)}function I_(e){return e*(180/J)}function Gs(e){if(!fe(e))return;let t=1,i=0;for(;Math.round(e*t)/t!==e;)t*=10,i++;return i}function vg(e,t){const i=t.x-e.x,r=t.y-e.y,n=Math.sqrt(i*i+r*r);let o=Math.atan2(r,i);return o<-.5*J&&(o+=ee),{angle:o,distance:n}}function oo(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function z_(e,t){return(e-t+__)%ee-J}function _e(e){return(e%ee+ee)%ee}function In(e,t,i,r){const n=_e(e),o=_e(t),a=_e(i),s=_e(o-n),c=_e(a-n),l=_e(n-o),u=_e(n-a);return n===o||n===a||r&&o===a||s>c&&l<u}function me(e,t,i){return Math.max(t,Math.min(i,e))}function T_(e){return me(e,-32768,32767)}function gt(e,t,i,r=1e-6){return e>=Math.min(t,i)-r&&e<=Math.max(t,i)+r}function ls(e,t,i){i=i||(a=>e[a]<t);let r=e.length-1,n=0,o;for(;r-n>1;)o=n+r>>1,i(o)?n=o:r=o;return{lo:n,hi:r}}const pt=(e,t,i,r)=>ls(e,i,r?n=>{const o=e[n][t];return o<i||o===i&&e[n+1][t]===i}:n=>e[n][t]<i),O_=(e,t,i)=>ls(e,i,r=>e[r][t]>=i);function D_(e,t,i){let r=0,n=e.length;for(;r<n&&e[r]<t;)r++;for(;n>r&&e[n-1]>i;)n--;return r>0||n<e.length?e.slice(r,n):e}const bg=["push","pop","shift","splice","unshift"];function P_(e,t){if(e._chartjs){e._chartjs.listeners.push(t);return}Object.defineProperty(e,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[t]}}),bg.forEach(i=>{const r="_onData"+cs(i),n=e[i];Object.defineProperty(e,i,{configurable:!0,enumerable:!1,value(...o){const a=n.apply(this,o);return e._chartjs.listeners.forEach(s=>{typeof s[r]=="function"&&s[r](...o)}),a}})})}function Ys(e,t){const i=e._chartjs;if(!i)return;const r=i.listeners,n=r.indexOf(t);n!==-1&&r.splice(n,1),!(r.length>0)&&(bg.forEach(o=>{delete e[o]}),delete e._chartjs)}function E_(e){const t=new Set(e);return t.size===e.length?e:Array.from(t)}const yg=(function(){return typeof window>"u"?function(e){return e()}:window.requestAnimationFrame})();function _g(e,t){let i=[],r=!1;return function(...n){i=n,r||(r=!0,yg.call(window,()=>{r=!1,e.apply(t,i)}))}}function j_(e,t){let i;return function(...r){return t?(clearTimeout(i),i=setTimeout(e,t,r)):e.apply(this,r),t}}const $g=e=>e==="start"?"left":e==="end"?"right":"center",ye=(e,t,i)=>e==="start"?t:e==="end"?i:(t+i)/2,M_=(e,t,i,r)=>e===(r?"left":"right")?i:e==="center"?(t+i)/2:t;function C_(e,t,i){const r=t.length;let n=0,o=r;if(e._sorted){const{iScale:a,vScale:s,_parsed:c}=e,l=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null,u=a.axis,{min:d,max:f,minDefined:h,maxDefined:g}=a.getUserBounds();if(h){if(n=Math.min(pt(c,u,d).lo,i?r:pt(t,u,a.getPixelForValue(d)).lo),l){const m=c.slice(0,n+1).reverse().findIndex(p=>!X(p[s.axis]));n-=Math.max(0,m)}n=me(n,0,r-1)}if(g){let m=Math.max(pt(c,a.axis,f,!0).hi+1,i?0:pt(t,u,a.getPixelForValue(f),!0).hi+1);if(l){const p=c.slice(m-1).findIndex(b=>!X(b[s.axis]));m+=Math.max(0,p)}o=me(m,n,r)-n}else o=r-n}return{start:n,count:o}}function U_(e){const{xScale:t,yScale:i,_scaleRanges:r}=e,n={xmin:t.min,xmax:t.max,ymin:i.min,ymax:i.max};if(!r)return e._scaleRanges=n,!0;const o=r.xmin!==t.min||r.xmax!==t.max||r.ymin!==i.min||r.ymax!==i.max;return Object.assign(r,n),o}const li=e=>e===0||e===1,Qs=(e,t,i)=>-(Math.pow(2,10*(e-=1))*Math.sin((e-t)*ee/i)),ec=(e,t,i)=>Math.pow(2,-10*e)*Math.sin((e-t)*ee/i)+1,mn={linear:e=>e,easeInQuad:e=>e*e,easeOutQuad:e=>-e*(e-2),easeInOutQuad:e=>(e/=.5)<1?.5*e*e:-.5*(--e*(e-2)-1),easeInCubic:e=>e*e*e,easeOutCubic:e=>(e-=1)*e*e+1,easeInOutCubic:e=>(e/=.5)<1?.5*e*e*e:.5*((e-=2)*e*e+2),easeInQuart:e=>e*e*e*e,easeOutQuart:e=>-((e-=1)*e*e*e-1),easeInOutQuart:e=>(e/=.5)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2),easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>(e-=1)*e*e*e*e+1,easeInOutQuint:e=>(e/=.5)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2),easeInSine:e=>-Math.cos(e*oe)+1,easeOutSine:e=>Math.sin(e*oe),easeInOutSine:e=>-.5*(Math.cos(J*e)-1),easeInExpo:e=>e===0?0:Math.pow(2,10*(e-1)),easeOutExpo:e=>e===1?1:-Math.pow(2,-10*e)+1,easeInOutExpo:e=>li(e)?e:e<.5?.5*Math.pow(2,10*(e*2-1)):.5*(-Math.pow(2,-10*(e*2-1))+2),easeInCirc:e=>e>=1?e:-(Math.sqrt(1-e*e)-1),easeOutCirc:e=>Math.sqrt(1-(e-=1)*e),easeInOutCirc:e=>(e/=.5)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1),easeInElastic:e=>li(e)?e:Qs(e,.075,.3),easeOutElastic:e=>li(e)?e:ec(e,.075,.3),easeInOutElastic(e){return li(e)?e:e<.5?.5*Qs(e*2,.1125,.45):.5+.5*ec(e*2-1,.1125,.45)},easeInBack(e){return e*e*((1.70158+1)*e-1.70158)},easeOutBack(e){return(e-=1)*e*((1.70158+1)*e+1.70158)+1},easeInOutBack(e){let t=1.70158;return(e/=.5)<1?.5*(e*e*(((t*=1.525)+1)*e-t)):.5*((e-=2)*e*(((t*=1.525)+1)*e+t)+2)},easeInBounce:e=>1-mn.easeOutBounce(1-e),easeOutBounce(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},easeInOutBounce:e=>e<.5?mn.easeInBounce(e*2)*.5:mn.easeOutBounce(e*2-1)*.5+.5};function us(e){if(e&&typeof e=="object"){const t=e.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function tc(e){return us(e)?e:new xn(e)}function Ar(e){return us(e)?e:new xn(e).saturate(.5).darken(.1).hexString()}const A_=["x","y","borderWidth","radius","tension"],N_=["color","borderColor","backgroundColor"];function R_(e){e.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),e.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),e.set("animations",{colors:{type:"color",properties:N_},numbers:{type:"number",properties:A_}}),e.describe("animations",{_fallback:"animation"}),e.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function L_(e){e.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const nc=new Map;function F_(e,t){t=t||{};const i=e+JSON.stringify(t);let r=nc.get(i);return r||(r=new Intl.NumberFormat(e,t),nc.set(i,r)),r}function ds(e,t,i){return F_(t,i).format(e)}const Z_={values(e){return ae(e)?e:""+e},numeric(e,t,i){if(e===0)return"0";const r=this.chart.options.locale;let n,o=e;if(i.length>1){const l=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(l<1e-4||l>1e15)&&(n="scientific"),o=B_(e,i)}const a=pg(Math.abs(o)),s=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),c={notation:n,minimumFractionDigits:s,maximumFractionDigits:s};return Object.assign(c,this.options.ticks.format),ds(e,r,c)}};function B_(e,t){let i=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(i)>=1&&e!==Math.floor(e)&&(i=e-Math.floor(e)),i}var xg={formatters:Z_};function W_(e){e.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,i)=>i.lineWidth,tickColor:(t,i)=>i.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:xg.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),e.route("scale.ticks","color","","color"),e.route("scale.grid","color","","borderColor"),e.route("scale.border","color","","borderColor"),e.route("scale.title","color","","color"),e.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),e.describe("scales",{_fallback:"scale"}),e.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const $t=Object.create(null),ao=Object.create(null);function gn(e,t){if(!t)return e;const i=t.split(".");for(let r=0,n=i.length;r<n;++r){const o=i[r];e=e[o]||(e[o]=Object.create(null))}return e}function Nr(e,t,i){return typeof t=="string"?kn(gn(e,t),i):kn(gn(e,""),t)}class V_{constructor(t,i){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=r=>r.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(r,n)=>Ar(n.backgroundColor),this.hoverBorderColor=(r,n)=>Ar(n.borderColor),this.hoverColor=(r,n)=>Ar(n.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(i)}set(t,i){return Nr(this,t,i)}get(t){return gn(this,t)}describe(t,i){return Nr(ao,t,i)}override(t,i){return Nr($t,t,i)}route(t,i,r,n){const o=gn(this,t),a=gn(this,r),s="_"+i;Object.defineProperties(o,{[s]:{value:o[i],writable:!0},[i]:{enumerable:!0,get(){const c=this[s],l=a[n];return B(c)?Object.assign({},l,c):Z(c,l)},set(c){this[s]=c}}})}apply(t){t.forEach(i=>i(this))}}var ne=new V_({_scriptable:e=>!e.startsWith("on"),_indexable:e=>e!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[R_,L_,W_]);function H_(e){return!e||X(e.size)||X(e.family)?null:(e.style?e.style+" ":"")+(e.weight?e.weight+" ":"")+e.size+"px "+e.family}function ic(e,t,i,r,n){let o=t[n];return o||(o=t[n]=e.measureText(n).width,i.push(n)),o>r&&(r=o),r}function ut(e,t,i){const r=e.currentDevicePixelRatio,n=i!==0?Math.max(i/2,.5):0;return Math.round((t-n)*r)/r+n}function rc(e,t){!t&&!e||(t=t||e.getContext("2d"),t.save(),t.resetTransform(),t.clearRect(0,0,e.width,e.height),t.restore())}function so(e,t,i,r){kg(e,t,i,r,null)}function kg(e,t,i,r,n){let o,a,s,c,l,u,d,f;const h=t.pointStyle,g=t.rotation,m=t.radius;let p=(g||0)*$_;if(h&&typeof h=="object"&&(o=h.toString(),o==="[object HTMLImageElement]"||o==="[object HTMLCanvasElement]")){e.save(),e.translate(i,r),e.rotate(p),e.drawImage(h,-h.width/2,-h.height/2,h.width,h.height),e.restore();return}if(!(isNaN(m)||m<=0)){switch(e.beginPath(),h){default:n?e.ellipse(i,r,n/2,m,0,0,ee):e.arc(i,r,m,0,ee),e.closePath();break;case"triangle":u=n?n/2:m,e.moveTo(i+Math.sin(p)*u,r-Math.cos(p)*m),p+=Ks,e.lineTo(i+Math.sin(p)*u,r-Math.cos(p)*m),p+=Ks,e.lineTo(i+Math.sin(p)*u,r-Math.cos(p)*m),e.closePath();break;case"rectRounded":l=m*.516,c=m-l,a=Math.cos(p+lt)*c,d=Math.cos(p+lt)*(n?n/2-l:c),s=Math.sin(p+lt)*c,f=Math.sin(p+lt)*(n?n/2-l:c),e.arc(i-d,r-s,l,p-J,p-oe),e.arc(i+f,r-a,l,p-oe,p),e.arc(i+d,r+s,l,p,p+oe),e.arc(i-f,r+a,l,p+oe,p+J),e.closePath();break;case"rect":if(!g){c=Math.SQRT1_2*m,u=n?n/2:c,e.rect(i-u,r-c,2*u,2*c);break}p+=lt;case"rectRot":d=Math.cos(p)*(n?n/2:m),a=Math.cos(p)*m,s=Math.sin(p)*m,f=Math.sin(p)*(n?n/2:m),e.moveTo(i-d,r-s),e.lineTo(i+f,r-a),e.lineTo(i+d,r+s),e.lineTo(i-f,r+a),e.closePath();break;case"crossRot":p+=lt;case"cross":d=Math.cos(p)*(n?n/2:m),a=Math.cos(p)*m,s=Math.sin(p)*m,f=Math.sin(p)*(n?n/2:m),e.moveTo(i-d,r-s),e.lineTo(i+d,r+s),e.moveTo(i+f,r-a),e.lineTo(i-f,r+a);break;case"star":d=Math.cos(p)*(n?n/2:m),a=Math.cos(p)*m,s=Math.sin(p)*m,f=Math.sin(p)*(n?n/2:m),e.moveTo(i-d,r-s),e.lineTo(i+d,r+s),e.moveTo(i+f,r-a),e.lineTo(i-f,r+a),p+=lt,d=Math.cos(p)*(n?n/2:m),a=Math.cos(p)*m,s=Math.sin(p)*m,f=Math.sin(p)*(n?n/2:m),e.moveTo(i-d,r-s),e.lineTo(i+d,r+s),e.moveTo(i+f,r-a),e.lineTo(i-f,r+a);break;case"line":a=n?n/2:Math.cos(p)*m,s=Math.sin(p)*m,e.moveTo(i-a,r-s),e.lineTo(i+a,r+s);break;case"dash":e.moveTo(i,r),e.lineTo(i+Math.cos(p)*(n?n/2:m),r+Math.sin(p)*m);break;case!1:e.closePath();break}e.fill(),t.borderWidth>0&&e.stroke()}}function zn(e,t,i){return i=i||.5,!t||e&&e.x>t.left-i&&e.x<t.right+i&&e.y>t.top-i&&e.y<t.bottom+i}function Tr(e,t){e.save(),e.beginPath(),e.rect(t.left,t.top,t.right-t.left,t.bottom-t.top),e.clip()}function Or(e){e.restore()}function J_(e,t,i,r,n){if(!t)return e.lineTo(i.x,i.y);if(n==="middle"){const o=(t.x+i.x)/2;e.lineTo(o,t.y),e.lineTo(o,i.y)}else n==="after"!=!!r?e.lineTo(t.x,i.y):e.lineTo(i.x,t.y);e.lineTo(i.x,i.y)}function q_(e,t,i,r){if(!t)return e.lineTo(i.x,i.y);e.bezierCurveTo(r?t.cp1x:t.cp2x,r?t.cp1y:t.cp2y,r?i.cp2x:i.cp1x,r?i.cp2y:i.cp1y,i.x,i.y)}function K_(e,t){t.translation&&e.translate(t.translation[0],t.translation[1]),X(t.rotation)||e.rotate(t.rotation),t.color&&(e.fillStyle=t.color),t.textAlign&&(e.textAlign=t.textAlign),t.textBaseline&&(e.textBaseline=t.textBaseline)}function X_(e,t,i,r,n){if(n.strikethrough||n.underline){const o=e.measureText(r),a=t-o.actualBoundingBoxLeft,s=t+o.actualBoundingBoxRight,c=i-o.actualBoundingBoxAscent,l=i+o.actualBoundingBoxDescent,u=n.strikethrough?(c+l)/2:l;e.strokeStyle=e.fillStyle,e.beginPath(),e.lineWidth=n.decorationWidth||2,e.moveTo(a,u),e.lineTo(s,u),e.stroke()}}function G_(e,t){const i=e.fillStyle;e.fillStyle=t.color,e.fillRect(t.left,t.top,t.width,t.height),e.fillStyle=i}function ji(e,t,i,r,n,o={}){const a=ae(t)?t:[t],s=o.strokeWidth>0&&o.strokeColor!=="";let c,l;for(e.save(),e.font=n.string,K_(e,o),c=0;c<a.length;++c)l=a[c],o.backdrop&&G_(e,o.backdrop),s&&(o.strokeColor&&(e.strokeStyle=o.strokeColor),X(o.strokeWidth)||(e.lineWidth=o.strokeWidth),e.strokeText(l,i,r,o.maxWidth)),e.fillText(l,i,r,o.maxWidth),X_(e,i,r,l,o),r+=Number(n.lineHeight);e.restore()}function co(e,t){const{x:i,y:r,w:n,h:o,radius:a}=t;e.arc(i+a.topLeft,r+a.topLeft,a.topLeft,1.5*J,J,!0),e.lineTo(i,r+o-a.bottomLeft),e.arc(i+a.bottomLeft,r+o-a.bottomLeft,a.bottomLeft,J,oe,!0),e.lineTo(i+n-a.bottomRight,r+o),e.arc(i+n-a.bottomRight,r+o-a.bottomRight,a.bottomRight,oe,0,!0),e.lineTo(i+n,r+a.topRight),e.arc(i+n-a.topRight,r+a.topRight,a.topRight,0,-oe,!0),e.lineTo(i+a.topLeft,r)}const Y_=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,Q_=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function e$(e,t){const i=(""+e).match(Y_);if(!i||i[1]==="normal")return t*1.2;switch(e=+i[2],i[3]){case"px":return e;case"%":e/=100;break}return t*e}const t$=e=>+e||0;function fs(e,t){const i={},r=B(t),n=r?Object.keys(t):t,o=B(e)?r?a=>Z(e[a],e[t[a]]):a=>e[a]:()=>e;for(const a of n)i[a]=t$(o(a));return i}function n$(e){return fs(e,{top:"y",right:"x",bottom:"y",left:"x"})}function pn(e){return fs(e,["topLeft","topRight","bottomLeft","bottomRight"])}function Pe(e){const t=n$(e);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function be(e,t){e=e||{},t=t||ne.font;let i=Z(e.size,t.size);typeof i=="string"&&(i=parseInt(i,10));let r=Z(e.style,t.style);r&&!(""+r).match(Q_)&&(console.warn('Invalid font style specified: "'+r+'"'),r=void 0);const n={family:Z(e.family,t.family),lineHeight:e$(Z(e.lineHeight,t.lineHeight),i),size:i,style:r,weight:Z(e.weight,t.weight),string:""};return n.string=H_(n),n}function ui(e,t,i,r){let n,o,a;for(n=0,o=e.length;n<o;++n)if(a=e[n],a!==void 0&&a!==void 0)return a}function i$(e,t,i){const{min:r,max:n}=e,o=mg(t,(n-r)/2),a=(s,c)=>i&&s===0?0:s+c;return{min:a(r,-Math.abs(o)),max:a(n,o)}}function St(e,t){return Object.assign(Object.create(e),t)}function hs(e,t=[""],i,r,n=()=>e[0]){const o=i||e;typeof r>"u"&&(r=zg("_fallback",e));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:e,_rootScopes:o,_fallback:r,_getTarget:n,override:s=>hs([s,...e],t,o,r)};return new Proxy(a,{deleteProperty(s,c){return delete s[c],delete s._keys,delete e[0][c],!0},get(s,c){return wg(s,c,()=>d$(c,t,e,s))},getOwnPropertyDescriptor(s,c){return Reflect.getOwnPropertyDescriptor(s._scopes[0],c)},getPrototypeOf(){return Reflect.getPrototypeOf(e[0])},has(s,c){return ac(s).includes(c)},ownKeys(s){return ac(s)},set(s,c,l){const u=s._storage||(s._storage=n());return s[c]=u[c]=l,delete s._keys,!0}})}function Bt(e,t,i,r){const n={_cacheable:!1,_proxy:e,_context:t,_subProxy:i,_stack:new Set,_descriptors:Sg(e,r),setContext:o=>Bt(e,o,i,r),override:o=>Bt(e.override(o),t,i,r)};return new Proxy(n,{deleteProperty(o,a){return delete o[a],delete e[a],!0},get(o,a,s){return wg(o,a,()=>o$(o,a,s))},getOwnPropertyDescriptor(o,a){return o._descriptors.allKeys?Reflect.has(e,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(e,a)},getPrototypeOf(){return Reflect.getPrototypeOf(e)},has(o,a){return Reflect.has(e,a)},ownKeys(){return Reflect.ownKeys(e)},set(o,a,s){return e[a]=s,delete o[a],!0}})}function Sg(e,t={scriptable:!0,indexable:!0}){const{_scriptable:i=t.scriptable,_indexable:r=t.indexable,_allKeys:n=t.allKeys}=e;return{allKeys:n,scriptable:i,indexable:r,isScriptable:it(i)?i:()=>i,isIndexable:it(r)?r:()=>r}}const r$=(e,t)=>e?e+cs(t):t,ms=(e,t)=>B(t)&&e!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function wg(e,t,i){if(Object.prototype.hasOwnProperty.call(e,t)||t==="constructor")return e[t];const r=i();return e[t]=r,r}function o$(e,t,i){const{_proxy:r,_context:n,_subProxy:o,_descriptors:a}=e;let s=r[t];return it(s)&&a.isScriptable(t)&&(s=a$(t,s,e,i)),ae(s)&&s.length&&(s=s$(t,s,e,a.isIndexable)),ms(t,s)&&(s=Bt(s,n,o&&o[t],a)),s}function a$(e,t,i,r){const{_proxy:n,_context:o,_subProxy:a,_stack:s}=i;if(s.has(e))throw new Error("Recursion detected: "+Array.from(s).join("->")+"->"+e);s.add(e);let c=t(o,a||r);return s.delete(e),ms(e,c)&&(c=gs(n._scopes,n,e,c)),c}function s$(e,t,i,r){const{_proxy:n,_context:o,_subProxy:a,_descriptors:s}=i;if(typeof o.index<"u"&&r(e))return t[o.index%t.length];if(B(t[0])){const c=t,l=n._scopes.filter(u=>u!==c);t=[];for(const u of c){const d=gs(l,n,e,u);t.push(Bt(d,o,a&&a[e],s))}}return t}function Ig(e,t,i){return it(e)?e(t,i):e}const c$=(e,t)=>e===!0?t:typeof e=="string"?Sn(t,e):void 0;function l$(e,t,i,r,n){for(const o of t){const a=c$(i,o);if(a){e.add(a);const s=Ig(a._fallback,i,n);if(typeof s<"u"&&s!==i&&s!==r)return s}else if(a===!1&&typeof r<"u"&&i!==r)return null}return!1}function gs(e,t,i,r){const n=t._rootScopes,o=Ig(t._fallback,i,r),a=[...e,...n],s=new Set;s.add(r);let c=oc(s,a,i,o||i,r);return c===null||typeof o<"u"&&o!==i&&(c=oc(s,a,o,c,r),c===null)?!1:hs(Array.from(s),[""],n,o,()=>u$(t,i,r))}function oc(e,t,i,r,n){for(;i;)i=l$(e,t,i,r,n);return i}function u$(e,t,i){const r=e._getTarget();t in r||(r[t]={});const n=r[t];return ae(n)&&B(i)?i:n||{}}function d$(e,t,i,r){let n;for(const o of t)if(n=zg(r$(o,e),i),typeof n<"u")return ms(e,n)?gs(i,r,e,n):n}function zg(e,t){for(const i of t){if(!i)continue;const r=i[e];if(typeof r<"u")return r}}function ac(e){let t=e._keys;return t||(t=e._keys=f$(e._scopes)),t}function f$(e){const t=new Set;for(const i of e)for(const r of Object.keys(i).filter(n=>!n.startsWith("_")))t.add(r);return Array.from(t)}const h$=Number.EPSILON||1e-14,Wt=(e,t)=>t<e.length&&!e[t].skip&&e[t],Tg=e=>e==="x"?"y":"x";function m$(e,t,i,r){const n=e.skip?t:e,o=t,a=i.skip?t:i,s=oo(o,n),c=oo(a,o);let l=s/(s+c),u=c/(s+c);l=isNaN(l)?0:l,u=isNaN(u)?0:u;const d=r*l,f=r*u;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+f*(a.x-n.x),y:o.y+f*(a.y-n.y)}}}function g$(e,t,i){const r=e.length;let n,o,a,s,c,l=Wt(e,0);for(let u=0;u<r-1;++u)if(c=l,l=Wt(e,u+1),!(!c||!l)){if(hn(t[u],0,h$)){i[u]=i[u+1]=0;continue}n=i[u]/t[u],o=i[u+1]/t[u],s=Math.pow(n,2)+Math.pow(o,2),!(s<=9)&&(a=3/Math.sqrt(s),i[u]=n*a*t[u],i[u+1]=o*a*t[u])}}function p$(e,t,i="x"){const r=Tg(i),n=e.length;let o,a,s,c=Wt(e,0);for(let l=0;l<n;++l){if(a=s,s=c,c=Wt(e,l+1),!s)continue;const u=s[i],d=s[r];a&&(o=(u-a[i])/3,s[`cp1${i}`]=u-o,s[`cp1${r}`]=d-o*t[l]),c&&(o=(c[i]-u)/3,s[`cp2${i}`]=u+o,s[`cp2${r}`]=d+o*t[l])}}function v$(e,t="x"){const i=Tg(t),r=e.length,n=Array(r).fill(0),o=Array(r);let a,s,c,l=Wt(e,0);for(a=0;a<r;++a)if(s=c,c=l,l=Wt(e,a+1),!!c){if(l){const u=l[t]-c[t];n[a]=u!==0?(l[i]-c[i])/u:0}o[a]=s?l?Zt(n[a-1])!==Zt(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}g$(e,n,o),p$(e,o,t)}function di(e,t,i){return Math.max(Math.min(e,i),t)}function b$(e,t){let i,r,n,o,a,s=zn(e[0],t);for(i=0,r=e.length;i<r;++i)a=o,o=s,s=i<r-1&&zn(e[i+1],t),o&&(n=e[i],a&&(n.cp1x=di(n.cp1x,t.left,t.right),n.cp1y=di(n.cp1y,t.top,t.bottom)),s&&(n.cp2x=di(n.cp2x,t.left,t.right),n.cp2y=di(n.cp2y,t.top,t.bottom)))}function y$(e,t,i,r,n){let o,a,s,c;if(t.spanGaps&&(e=e.filter(l=>!l.skip)),t.cubicInterpolationMode==="monotone")v$(e,n);else{let l=r?e[e.length-1]:e[0];for(o=0,a=e.length;o<a;++o)s=e[o],c=m$(l,s,e[Math.min(o+1,a-(r?0:1))%a],t.tension),s.cp1x=c.previous.x,s.cp1y=c.previous.y,s.cp2x=c.next.x,s.cp2y=c.next.y,l=s}t.capBezierPoints&&b$(e,i)}function ps(){return typeof window<"u"&&typeof document<"u"}function vs(e){let t=e.parentNode;return t&&t.toString()==="[object ShadowRoot]"&&(t=t.host),t}function Mi(e,t,i){let r;return typeof e=="string"?(r=parseInt(e,10),e.indexOf("%")!==-1&&(r=r/100*t.parentNode[i])):r=e,r}const Dr=e=>e.ownerDocument.defaultView.getComputedStyle(e,null);function _$(e,t){return Dr(e).getPropertyValue(t)}const $$=["top","right","bottom","left"];function bt(e,t,i){const r={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=$$[n];r[o]=parseFloat(e[t+"-"+o+i])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}const x$=(e,t,i)=>(e>0||t>0)&&(!i||!i.shadowRoot);function k$(e,t){const i=e.touches,r=i&&i.length?i[0]:e,{offsetX:n,offsetY:o}=r;let a=!1,s,c;if(x$(n,o,e.target))s=n,c=o;else{const l=t.getBoundingClientRect();s=r.clientX-l.left,c=r.clientY-l.top,a=!0}return{x:s,y:c,box:a}}function ft(e,t){if("native"in e)return e;const{canvas:i,currentDevicePixelRatio:r}=t,n=Dr(i),o=n.boxSizing==="border-box",a=bt(n,"padding"),s=bt(n,"border","width"),{x:c,y:l,box:u}=k$(e,i),d=a.left+(u&&s.left),f=a.top+(u&&s.top);let{width:h,height:g}=t;return o&&(h-=a.width+s.width,g-=a.height+s.height),{x:Math.round((c-d)/h*i.width/r),y:Math.round((l-f)/g*i.height/r)}}function S$(e,t,i){let r,n;if(t===void 0||i===void 0){const o=e&&vs(e);if(!o)t=e.clientWidth,i=e.clientHeight;else{const a=o.getBoundingClientRect(),s=Dr(o),c=bt(s,"border","width"),l=bt(s,"padding");t=a.width-l.width-c.width,i=a.height-l.height-c.height,r=Mi(s.maxWidth,o,"clientWidth"),n=Mi(s.maxHeight,o,"clientHeight")}}return{width:t,height:i,maxWidth:r||Ei,maxHeight:n||Ei}}const Ge=e=>Math.round(e*10)/10;function w$(e,t,i,r){const n=Dr(e),o=bt(n,"margin"),a=Mi(n.maxWidth,e,"clientWidth")||Ei,s=Mi(n.maxHeight,e,"clientHeight")||Ei,c=S$(e,t,i);let{width:l,height:u}=c;if(n.boxSizing==="content-box"){const f=bt(n,"border","width"),h=bt(n,"padding");l-=h.width+f.width,u-=h.height+f.height}return l=Math.max(0,l-o.width),u=Math.max(0,r?l/r:u-o.height),l=Ge(Math.min(l,a,c.maxWidth)),u=Ge(Math.min(u,s,c.maxHeight)),l&&!u&&(u=Ge(l/2)),(t!==void 0||i!==void 0)&&r&&c.height&&u>c.height&&(u=c.height,l=Ge(Math.floor(u*r))),{width:l,height:u}}function sc(e,t,i){const r=t||1,n=Ge(e.height*r),o=Ge(e.width*r);e.height=Ge(e.height),e.width=Ge(e.width);const a=e.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${e.height}px`,a.style.width=`${e.width}px`),e.currentDevicePixelRatio!==r||a.height!==n||a.width!==o?(e.currentDevicePixelRatio=r,a.height=n,a.width=o,e.ctx.setTransform(r,0,0,r,0,0),!0):!1}const I$=(function(){let e=!1;try{const t={get passive(){return e=!0,!1}};ps()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch{}return e})();function cc(e,t){const i=_$(e,t),r=i&&i.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function ht(e,t,i,r){return{x:e.x+i*(t.x-e.x),y:e.y+i*(t.y-e.y)}}function z$(e,t,i,r){return{x:e.x+i*(t.x-e.x),y:r==="middle"?i<.5?e.y:t.y:r==="after"?i<1?e.y:t.y:i>0?t.y:e.y}}function T$(e,t,i,r){const n={x:e.cp2x,y:e.cp2y},o={x:t.cp1x,y:t.cp1y},a=ht(e,n,i),s=ht(n,o,i),c=ht(o,t,i),l=ht(a,s,i),u=ht(s,c,i);return ht(l,u,i)}const O$=function(e,t){return{x(i){return e+e+t-i},setWidth(i){t=i},textAlign(i){return i==="center"?i:i==="right"?"left":"right"},xPlus(i,r){return i-r},leftForLtr(i,r){return i-r}}},D$=function(){return{x(e){return e},setWidth(e){},textAlign(e){return e},xPlus(e,t){return e+t},leftForLtr(e,t){return e}}};function jt(e,t,i){return e?O$(t,i):D$()}function Og(e,t){let i,r;(t==="ltr"||t==="rtl")&&(i=e.canvas.style,r=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",t,"important"),e.prevTextDirection=r)}function Dg(e,t){t!==void 0&&(delete e.prevTextDirection,e.canvas.style.setProperty("direction",t[0],t[1]))}function Pg(e){return e==="angle"?{between:In,compare:z_,normalize:_e}:{between:gt,compare:(t,i)=>t-i,normalize:t=>t}}function lc({start:e,end:t,count:i,loop:r,style:n}){return{start:e%i,end:t%i,loop:r&&(t-e+1)%i===0,style:n}}function P$(e,t,i){const{property:r,start:n,end:o}=i,{between:a,normalize:s}=Pg(r),c=t.length;let{start:l,end:u,loop:d}=e,f,h;if(d){for(l+=c,u+=c,f=0,h=c;f<h&&a(s(t[l%c][r]),n,o);++f)l--,u--;l%=c,u%=c}return u<l&&(u+=c),{start:l,end:u,loop:d,style:e.style}}function Eg(e,t,i){if(!i)return[e];const{property:r,start:n,end:o}=i,a=t.length,{compare:s,between:c,normalize:l}=Pg(r),{start:u,end:d,loop:f,style:h}=P$(e,t,i),g=[];let m=!1,p=null,b,_,k;const x=()=>c(n,k,b)&&s(n,k)!==0,y=()=>s(o,b)===0||c(o,k,b),z=()=>m||x(),T=()=>!m||y();for(let I=u,E=u;I<=d;++I)_=t[I%a],!_.skip&&(b=l(_[r]),b!==k&&(m=c(b,n,o),p===null&&z()&&(p=s(b,n)===0?I:E),p!==null&&T()&&(g.push(lc({start:p,end:I,loop:f,count:a,style:h})),p=null),E=I,k=b));return p!==null&&g.push(lc({start:p,end:d,loop:f,count:a,style:h})),g}function jg(e,t){const i=[],r=e.segments;for(let n=0;n<r.length;n++){const o=Eg(r[n],e.points,t);o.length&&i.push(...o)}return i}function E$(e,t,i,r){let n=0,o=t-1;if(i&&!r)for(;n<t&&!e[n].skip;)n++;for(;n<t&&e[n].skip;)n++;for(n%=t,i&&(o+=n);o>n&&e[o%t].skip;)o--;return o%=t,{start:n,end:o}}function j$(e,t,i,r){const n=e.length,o=[];let a=t,s=e[t],c;for(c=t+1;c<=i;++c){const l=e[c%n];l.skip||l.stop?s.skip||(r=!1,o.push({start:t%n,end:(c-1)%n,loop:r}),t=a=l.stop?c:null):(a=c,s.skip&&(t=c)),s=l}return a!==null&&o.push({start:t%n,end:a%n,loop:r}),o}function M$(e,t){const i=e.points,r=e.options.spanGaps,n=i.length;if(!n)return[];const o=!!e._loop,{start:a,end:s}=E$(i,n,o,r);if(r===!0)return uc(e,[{start:a,end:s,loop:o}],i,t);const c=s<a?s+n:s,l=!!e._fullLoop&&a===0&&s===n-1;return uc(e,j$(i,a,c,l),i,t)}function uc(e,t,i,r){return!r||!r.setContext||!i?t:C$(e,t,i,r)}function C$(e,t,i,r){const n=e._chart.getContext(),o=dc(e.options),{_datasetIndex:a,options:{spanGaps:s}}=e,c=i.length,l=[];let u=o,d=t[0].start,f=d;function h(g,m,p,b){const _=s?-1:1;if(g!==m){for(g+=c;i[g%c].skip;)g-=_;for(;i[m%c].skip;)m+=_;g%c!==m%c&&(l.push({start:g%c,end:m%c,loop:p,style:b}),u=b,d=m%c)}}for(const g of t){d=s?d:g.start;let m=i[d%c],p;for(f=d+1;f<=g.end;f++){const b=i[f%c];p=dc(r.setContext(St(n,{type:"segment",p0:m,p1:b,p0DataIndex:(f-1)%c,p1DataIndex:f%c,datasetIndex:a}))),U$(p,u)&&h(d,f-1,g.loop,u),m=b,u=p}d<f-1&&h(d,f-1,g.loop,u)}return l}function dc(e){return{backgroundColor:e.backgroundColor,borderCapStyle:e.borderCapStyle,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderJoinStyle:e.borderJoinStyle,borderWidth:e.borderWidth,borderColor:e.borderColor}}function U$(e,t){if(!t)return!1;const i=[],r=function(n,o){return us(o)?(i.includes(o)||i.push(o),i.indexOf(o)):o};return JSON.stringify(e,r)!==JSON.stringify(t,r)}function fi(e,t,i){return e.options.clip?e[i]:t[i]}function A$(e,t){const{xScale:i,yScale:r}=e;return i&&r?{left:fi(i,t,"left"),right:fi(i,t,"right"),top:fi(r,t,"top"),bottom:fi(r,t,"bottom")}:t}function Mg(e,t){const i=t._clip;if(i.disabled)return!1;const r=A$(t,e.chartArea);return{left:i.left===!1?0:r.left-(i.left===!0?0:i.left),right:i.right===!1?e.width:r.right+(i.right===!0?0:i.right),top:i.top===!1?0:r.top-(i.top===!0?0:i.top),bottom:i.bottom===!1?e.height:r.bottom+(i.bottom===!0?0:i.bottom)}}class N${constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,i,r,n){const o=i.listeners[n],a=i.duration;o.forEach(s=>s({chart:t,initial:i.initial,numSteps:a,currentStep:Math.min(r-i.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=yg.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let i=0;this._charts.forEach((r,n)=>{if(!r.running||!r.items.length)return;const o=r.items;let a=o.length-1,s=!1,c;for(;a>=0;--a)c=o[a],c._active?(c._total>r.duration&&(r.duration=c._total),c.tick(t),s=!0):(o[a]=o[o.length-1],o.pop());s&&(n.draw(),this._notify(n,r,t,"progress")),o.length||(r.running=!1,this._notify(n,r,t,"complete"),r.initial=!1),i+=o.length}),this._lastDate=t,i===0&&(this._running=!1)}_getAnims(t){const i=this._charts;let r=i.get(t);return r||(r={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},i.set(t,r)),r}listen(t,i,r){this._getAnims(t).listeners[i].push(r)}add(t,i){!i||!i.length||this._getAnims(t).items.push(...i)}has(t){return this._getAnims(t).items.length>0}start(t){const i=this._charts.get(t);i&&(i.running=!0,i.start=Date.now(),i.duration=i.items.reduce((r,n)=>Math.max(r,n._duration),0),this._refresh())}running(t){if(!this._running)return!1;const i=this._charts.get(t);return!(!i||!i.running||!i.items.length)}stop(t){const i=this._charts.get(t);if(!i||!i.items.length)return;const r=i.items;let n=r.length-1;for(;n>=0;--n)r[n].cancel();i.items=[],this._notify(t,i,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var Le=new N$;const fc="transparent",R$={boolean(e,t,i){return i>.5?t:e},color(e,t,i){const r=tc(e||fc),n=r.valid&&tc(t||fc);return n&&n.valid?n.mix(r,i).hexString():t},number(e,t,i){return e+(t-e)*i}};class L${constructor(t,i,r,n){const o=i[r];n=ui([t.to,n,o,t.from]);const a=ui([t.from,o,n]);this._active=!0,this._fn=t.fn||R$[t.type||typeof a],this._easing=mn[t.easing]||mn.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=i,this._prop=r,this._from=a,this._to=n,this._promises=void 0}active(){return this._active}update(t,i,r){if(this._active){this._notify(!1);const n=this._target[this._prop],o=r-this._start,a=this._duration-o;this._start=r,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=ui([t.to,i,n,t.from]),this._from=ui([t.from,n,i])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const i=t-this._start,r=this._duration,n=this._prop,o=this._from,a=this._loop,s=this._to;let c;if(this._active=o!==s&&(a||i<r),!this._active){this._target[n]=s,this._notify(!0);return}if(i<0){this._target[n]=o;return}c=i/r%2,c=a&&c>1?2-c:c,c=this._easing(Math.min(1,Math.max(0,c))),this._target[n]=this._fn(o,s,c)}wait(){const t=this._promises||(this._promises=[]);return new Promise((i,r)=>{t.push({res:i,rej:r})})}_notify(t){const i=t?"res":"rej",r=this._promises||[];for(let n=0;n<r.length;n++)r[n][i]()}}class Cg{constructor(t,i){this._chart=t,this._properties=new Map,this.configure(i)}configure(t){if(!B(t))return;const i=Object.keys(ne.animation),r=this._properties;Object.getOwnPropertyNames(t).forEach(n=>{const o=t[n];if(!B(o))return;const a={};for(const s of i)a[s]=o[s];(ae(o.properties)&&o.properties||[n]).forEach(s=>{(s===n||!r.has(s))&&r.set(s,a)})})}_animateOptions(t,i){const r=i.options,n=Z$(t,r);if(!n)return[];const o=this._createAnimations(n,r);return r.$shared&&F$(t.options.$animations,r).then(()=>{t.options=r},()=>{}),o}_createAnimations(t,i){const r=this._properties,n=[],o=t.$animations||(t.$animations={}),a=Object.keys(i),s=Date.now();let c;for(c=a.length-1;c>=0;--c){const l=a[c];if(l.charAt(0)==="$")continue;if(l==="options"){n.push(...this._animateOptions(t,i));continue}const u=i[l];let d=o[l];const f=r.get(l);if(d)if(f&&d.active()){d.update(f,u,s);continue}else d.cancel();if(!f||!f.duration){t[l]=u;continue}o[l]=d=new L$(f,t,l,u),n.push(d)}return n}update(t,i){if(this._properties.size===0){Object.assign(t,i);return}const r=this._createAnimations(t,i);if(r.length)return Le.add(this._chart,r),!0}}function F$(e,t){const i=[],r=Object.keys(t);for(let n=0;n<r.length;n++){const o=e[r[n]];o&&o.active()&&i.push(o.wait())}return Promise.all(i)}function Z$(e,t){if(!t)return;let i=e.options;if(!i){e.options=t;return}return i.$shared&&(e.options=i=Object.assign({},i,{$shared:!1,$animations:{}})),i}function hc(e,t){const i=e&&e.options||{},r=i.reverse,n=i.min===void 0?t:0,o=i.max===void 0?t:0;return{start:r?o:n,end:r?n:o}}function B$(e,t,i){if(i===!1)return!1;const r=hc(e,i),n=hc(t,i);return{top:n.end,right:r.end,bottom:n.start,left:r.start}}function W$(e){let t,i,r,n;return B(e)?(t=e.top,i=e.right,r=e.bottom,n=e.left):t=i=r=n=e,{top:t,right:i,bottom:r,left:n,disabled:e===!1}}function Ug(e,t){const i=[],r=e._getSortedDatasetMetas(t);let n,o;for(n=0,o=r.length;n<o;++n)i.push(r[n].index);return i}function mc(e,t,i,r={}){const n=e.keys,o=r.mode==="single";let a,s,c,l;if(t===null)return;let u=!1;for(a=0,s=n.length;a<s;++a){if(c=+n[a],c===i){if(u=!0,r.all)continue;break}l=e.values[c],fe(l)&&(o||t===0||Zt(t)===Zt(l))&&(t+=l)}return!u&&!r.all?0:t}function V$(e,t){const{iScale:i,vScale:r}=t,n=i.axis==="x"?"x":"y",o=r.axis==="x"?"x":"y",a=Object.keys(e),s=new Array(a.length);let c,l,u;for(c=0,l=a.length;c<l;++c)u=a[c],s[c]={[n]:u,[o]:e[u]};return s}function Rr(e,t){const i=e&&e.options.stacked;return i||i===void 0&&t.stack!==void 0}function H$(e,t,i){return`${e.id}.${t.id}.${i.stack||i.type}`}function J$(e){const{min:t,max:i,minDefined:r,maxDefined:n}=e.getUserBounds();return{min:r?t:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}function q$(e,t,i){const r=e[t]||(e[t]={});return r[i]||(r[i]={})}function gc(e,t,i,r){for(const n of t.getMatchingVisibleMetas(r).reverse()){const o=e[n.index];if(i&&o>0||!i&&o<0)return n.index}return null}function pc(e,t){const{chart:i,_cachedMeta:r}=e,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:s}=r,c=o.axis,l=a.axis,u=H$(o,a,r),d=t.length;let f;for(let h=0;h<d;++h){const g=t[h],{[c]:m,[l]:p}=g,b=g._stacks||(g._stacks={});f=b[l]=q$(n,u,m),f[s]=p,f._top=gc(f,a,!0,r.type),f._bottom=gc(f,a,!1,r.type);const _=f._visualValues||(f._visualValues={});_[s]=p}}function Lr(e,t){const i=e.scales;return Object.keys(i).filter(r=>i[r].axis===t).shift()}function K$(e,t){return St(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function X$(e,t,i){return St(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:i,index:t,mode:"default",type:"data"})}function tn(e,t){const i=e.controller.index,r=e.vScale&&e.vScale.axis;if(r){t=t||e._parsed;for(const n of t){const o=n._stacks;if(!o||o[r]===void 0||o[r][i]===void 0)return;delete o[r][i],o[r]._visualValues!==void 0&&o[r]._visualValues[i]!==void 0&&delete o[r]._visualValues[i]}}}const Fr=e=>e==="reset"||e==="none",vc=(e,t)=>t?e:Object.assign({},e),G$=(e,t,i)=>e&&!t.hidden&&t._stacked&&{keys:Ug(i,!0),values:null};class bs{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,i){this.chart=t,this._ctx=t.ctx,this.index=i,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Rr(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&tn(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,i=this._cachedMeta,r=this.getDataset(),n=(d,f,h,g)=>d==="x"?f:d==="r"?g:h,o=i.xAxisID=Z(r.xAxisID,Lr(t,"x")),a=i.yAxisID=Z(r.yAxisID,Lr(t,"y")),s=i.rAxisID=Z(r.rAxisID,Lr(t,"r")),c=i.indexAxis,l=i.iAxisID=n(c,o,a,s),u=i.vAxisID=n(c,a,o,s);i.xScale=this.getScaleForId(o),i.yScale=this.getScaleForId(a),i.rScale=this.getScaleForId(s),i.iScale=this.getScaleForId(l),i.vScale=this.getScaleForId(u)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const i=this._cachedMeta;return t===i.iScale?i.vScale:i.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Ys(this._data,this),t._stacked&&tn(t)}_dataCheck(){const t=this.getDataset(),i=t.data||(t.data=[]),r=this._data;if(B(i)){const n=this._cachedMeta;this._data=V$(i,n)}else if(r!==i){if(r){Ys(r,this);const n=this._cachedMeta;tn(n),n._parsed=[]}i&&Object.isExtensible(i)&&P_(i,this),this._syncList=[],this._data=i}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const i=this._cachedMeta,r=this.getDataset();let n=!1;this._dataCheck();const o=i._stacked;i._stacked=Rr(i.vScale,i),i.stack!==r.stack&&(n=!0,tn(i),i.stack=r.stack),this._resyncElements(t),(n||o!==i._stacked)&&(pc(this,i._parsed),i._stacked=Rr(i.vScale,i))}configure(){const t=this.chart.config,i=t.datasetScopeKeys(this._type),r=t.getOptionScopes(this.getDataset(),i,!0);this.options=t.createResolver(r,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,i){const{_cachedMeta:r,_data:n}=this,{iScale:o,_stacked:a}=r,s=o.axis;let c=t===0&&i===n.length?!0:r._sorted,l=t>0&&r._parsed[t-1],u,d,f;if(this._parsing===!1)r._parsed=n,r._sorted=!0,f=n;else{ae(n[t])?f=this.parseArrayData(r,n,t,i):B(n[t])?f=this.parseObjectData(r,n,t,i):f=this.parsePrimitiveData(r,n,t,i);const h=()=>d[s]===null||l&&d[s]<l[s];for(u=0;u<i;++u)r._parsed[u+t]=d=f[u],c&&(h()&&(c=!1),l=d);r._sorted=c}a&&pc(this,f)}parsePrimitiveData(t,i,r,n){const{iScale:o,vScale:a}=t,s=o.axis,c=a.axis,l=o.getLabels(),u=o===a,d=new Array(n);let f,h,g;for(f=0,h=n;f<h;++f)g=f+r,d[f]={[s]:u||o.parse(l[g],g),[c]:a.parse(i[g],g)};return d}parseArrayData(t,i,r,n){const{xScale:o,yScale:a}=t,s=new Array(n);let c,l,u,d;for(c=0,l=n;c<l;++c)u=c+r,d=i[u],s[c]={x:o.parse(d[0],u),y:a.parse(d[1],u)};return s}parseObjectData(t,i,r,n){const{xScale:o,yScale:a}=t,{xAxisKey:s="x",yAxisKey:c="y"}=this._parsing,l=new Array(n);let u,d,f,h;for(u=0,d=n;u<d;++u)f=u+r,h=i[f],l[u]={x:o.parse(Sn(h,s),f),y:a.parse(Sn(h,c),f)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,i,r){const n=this.chart,o=this._cachedMeta,a=i[t.axis],s={keys:Ug(n,!0),values:i._stacks[t.axis]._visualValues};return mc(s,a,o.index,{mode:r})}updateRangeFromParsed(t,i,r,n){const o=r[i.axis];let a=o===null?NaN:o;const s=n&&r._stacks[i.axis];n&&s&&(n.values=s,a=mc(n,o,this._cachedMeta.index)),t.min=Math.min(t.min,a),t.max=Math.max(t.max,a)}getMinMax(t,i){const r=this._cachedMeta,n=r._parsed,o=r._sorted&&t===r.iScale,a=n.length,s=this._getOtherScale(t),c=G$(i,r,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:u,max:d}=J$(s);let f,h;function g(){h=n[f];const m=h[s.axis];return!fe(h[t.axis])||u>m||d<m}for(f=0;f<a&&!(!g()&&(this.updateRangeFromParsed(l,t,h,c),o));++f);if(o){for(f=a-1;f>=0;--f)if(!g()){this.updateRangeFromParsed(l,t,h,c);break}}return l}getAllParsedValues(t){const i=this._cachedMeta._parsed,r=[];let n,o,a;for(n=0,o=i.length;n<o;++n)a=i[n][t.axis],fe(a)&&r.push(a);return r}getMaxOverflow(){return!1}getLabelAndValue(t){const i=this._cachedMeta,r=i.iScale,n=i.vScale,o=this.getParsed(t);return{label:r?""+r.getLabelForValue(o[r.axis]):"",value:n?""+n.getLabelForValue(o[n.axis]):""}}_update(t){const i=this._cachedMeta;this.update(t||"default"),i._clip=W$(Z(this.options.clip,B$(i.xScale,i.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,i=this.chart,r=this._cachedMeta,n=r.data||[],o=i.chartArea,a=[],s=this._drawStart||0,c=this._drawCount||n.length-s,l=this.options.drawActiveElementsOnTop;let u;for(r.dataset&&r.dataset.draw(t,o,s,c),u=s;u<s+c;++u){const d=n[u];d.hidden||(d.active&&l?a.push(d):d.draw(t,o))}for(u=0;u<a.length;++u)a[u].draw(t,o)}getStyle(t,i){const r=i?"active":"default";return t===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(r):this.resolveDataElementOptions(t||0,r)}getContext(t,i,r){const n=this.getDataset();let o;if(t>=0&&t<this._cachedMeta.data.length){const a=this._cachedMeta.data[t];o=a.$context||(a.$context=X$(this.getContext(),t,a)),o.parsed=this.getParsed(t),o.raw=n.data[t],o.index=o.dataIndex=t}else o=this.$context||(this.$context=K$(this.chart.getContext(),this.index)),o.dataset=n,o.index=o.datasetIndex=this.index;return o.active=!!i,o.mode=r,o}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,i){return this._resolveElementOptions(this.dataElementType.id,i,t)}_resolveElementOptions(t,i="default",r){const n=i==="active",o=this._cachedDataOpts,a=t+"-"+i,s=o[a],c=this.enableOptionSharing&&Pi(r);if(s)return vc(s,c);const l=this.chart.config,u=l.datasetElementScopeKeys(this._type,t),d=n?[`${t}Hover`,"hover",t,""]:[t,""],f=l.getOptionScopes(this.getDataset(),u),h=Object.keys(ne.elements[t]),g=()=>this.getContext(r,n,i),m=l.resolveNamedOptions(f,h,g,d);return m.$shared&&(m.$shared=c,o[a]=Object.freeze(vc(m,c))),m}_resolveAnimations(t,i,r){const n=this.chart,o=this._cachedDataOpts,a=`animation-${i}`,s=o[a];if(s)return s;let c;if(n.options.animation!==!1){const u=this.chart.config,d=u.datasetAnimationScopeKeys(this._type,i),f=u.getOptionScopes(this.getDataset(),d);c=u.createResolver(f,this.getContext(t,r,i))}const l=new Cg(n,c&&c.animations);return c&&c._cacheable&&(o[a]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,i){return!i||Fr(t)||this.chart._animationsDisabled}_getSharedOptions(t,i){const r=this.resolveDataElementOptions(t,i),n=this._sharedOptions,o=this.getSharedOptions(r),a=this.includeOptions(i,o)||o!==n;return this.updateSharedOptions(o,i,r),{sharedOptions:o,includeOptions:a}}updateElement(t,i,r,n){Fr(n)?Object.assign(t,r):this._resolveAnimations(i,n).update(t,r)}updateSharedOptions(t,i,r){t&&!Fr(i)&&this._resolveAnimations(void 0,i).update(t,r)}_setStyle(t,i,r,n){t.active=n;const o=this.getStyle(i,n);this._resolveAnimations(i,r,n).update(t,{options:!n&&this.getSharedOptions(o)||o})}removeHoverStyle(t,i,r){this._setStyle(t,r,"active",!1)}setHoverStyle(t,i,r){this._setStyle(t,r,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const i=this._data,r=this._cachedMeta.data;for(const[s,c,l]of this._syncList)this[s](c,l);this._syncList=[];const n=r.length,o=i.length,a=Math.min(o,n);a&&this.parse(0,a),o>n?this._insertElements(n,o-n,t):o<n&&this._removeElements(o,n-o)}_insertElements(t,i,r=!0){const n=this._cachedMeta,o=n.data,a=t+i;let s;const c=l=>{for(l.length+=i,s=l.length-1;s>=a;s--)l[s]=l[s-i]};for(c(o),s=t;s<a;++s)o[s]=new this.dataElementType;this._parsing&&c(n._parsed),this.parse(t,i),r&&this.updateElements(o,t,i,"reset")}updateElements(t,i,r,n){}_removeElements(t,i){const r=this._cachedMeta;if(this._parsing){const n=r._parsed.splice(t,i);r._stacked&&tn(r,n)}r.data.splice(t,i)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[i,r,n]=t;this[i](r,n)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,i){i&&this._sync(["_removeElements",t,i]);const r=arguments.length-2;r&&this._sync(["_insertElements",t,r])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function Y$(e,t,i){let r=1,n=1,o=0,a=0;if(t<ee){const s=e,c=s+t,l=Math.cos(s),u=Math.sin(s),d=Math.cos(c),f=Math.sin(c),h=(k,x,y)=>In(k,s,c,!0)?1:Math.max(x,x*i,y,y*i),g=(k,x,y)=>In(k,s,c,!0)?-1:Math.min(x,x*i,y,y*i),m=h(0,l,d),p=h(oe,u,f),b=g(J,l,d),_=g(J+oe,u,f);r=(m-b)/2,n=(p-_)/2,o=-(m+b)/2,a=-(p+_)/2}return{ratioX:r,ratioY:n,offsetX:o,offsetY:a}}class Q$ extends bs{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>t!=="spacing",_indexable:t=>t!=="spacing"&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const i=t.data,{labels:{pointStyle:r,textAlign:n,color:o,useBorderRadius:a,borderRadius:s}}=t.legend.options;return i.labels.length&&i.datasets.length?i.labels.map((c,l)=>{const d=t.getDatasetMeta(0).controller.getStyle(l);return{text:c,fillStyle:d.backgroundColor,fontColor:o,hidden:!t.getDataVisibility(l),lineDash:d.borderDash,lineDashOffset:d.borderDashOffset,lineJoin:d.borderJoinStyle,lineWidth:d.borderWidth,strokeStyle:d.borderColor,textAlign:n,pointStyle:r,borderRadius:a&&(s||d.borderRadius),index:l}}):[]}},onClick(t,i,r){r.chart.toggleDataVisibility(i.index),r.chart.update()}}}};constructor(t,i){super(t,i),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,i){const r=this.getDataset().data,n=this._cachedMeta;if(this._parsing===!1)n._parsed=r;else{let o=c=>+r[c];if(B(r[t])){const{key:c="value"}=this._parsing;o=l=>+Sn(r[l],c)}let a,s;for(a=t,s=t+i;a<s;++a)n._parsed[a]=o(a)}}_getRotation(){return Be(this.options.rotation-90)}_getCircumference(){return Be(this.options.circumference)}_getRotationExtents(){let t=ee,i=-ee;for(let r=0;r<this.chart.data.datasets.length;++r)if(this.chart.isDatasetVisible(r)&&this.chart.getDatasetMeta(r).type===this._type){const n=this.chart.getDatasetMeta(r).controller,o=n._getRotation(),a=n._getCircumference();t=Math.min(t,o),i=Math.max(i,o+a)}return{rotation:t,circumference:i-t}}update(t){const i=this.chart,{chartArea:r}=i,n=this._cachedMeta,o=n.data,a=this.getMaxBorderWidth()+this.getMaxOffset(o)+this.options.spacing,s=Math.max((Math.min(r.width,r.height)-a)/2,0),c=Math.min(m_(this.options.cutout,s),1),l=this._getRingWeight(this.index),{circumference:u,rotation:d}=this._getRotationExtents(),{ratioX:f,ratioY:h,offsetX:g,offsetY:m}=Y$(d,u,c),p=(r.width-a)/f,b=(r.height-a)/h,_=Math.max(Math.min(p,b)/2,0),k=mg(this.options.radius,_),x=Math.max(k*c,0),y=(k-x)/this._getVisibleDatasetWeightTotal();this.offsetX=g*k,this.offsetY=m*k,n.total=this.calculateTotal(),this.outerRadius=k-y*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-y*l,0),this.updateElements(o,0,o.length,t)}_circumference(t,i){const r=this.options,n=this._cachedMeta,o=this._getCircumference();return i&&r.animation.animateRotate||!this.chart.getDataVisibility(t)||n._parsed[t]===null||n.data[t].hidden?0:this.calculateCircumference(n._parsed[t]*o/ee)}updateElements(t,i,r,n){const o=n==="reset",a=this.chart,s=a.chartArea,l=a.options.animation,u=(s.left+s.right)/2,d=(s.top+s.bottom)/2,f=o&&l.animateScale,h=f?0:this.innerRadius,g=f?0:this.outerRadius,{sharedOptions:m,includeOptions:p}=this._getSharedOptions(i,n);let b=this._getRotation(),_;for(_=0;_<i;++_)b+=this._circumference(_,o);for(_=i;_<i+r;++_){const k=this._circumference(_,o),x=t[_],y={x:u+this.offsetX,y:d+this.offsetY,startAngle:b,endAngle:b+k,circumference:k,outerRadius:g,innerRadius:h};p&&(y.options=m||this.resolveDataElementOptions(_,x.active?"active":n)),b+=k,this.updateElement(x,_,y,n)}}calculateTotal(){const t=this._cachedMeta,i=t.data;let r=0,n;for(n=0;n<i.length;n++){const o=t._parsed[n];o!==null&&!isNaN(o)&&this.chart.getDataVisibility(n)&&!i[n].hidden&&(r+=Math.abs(o))}return r}calculateCircumference(t){const i=this._cachedMeta.total;return i>0&&!isNaN(t)?ee*(Math.abs(t)/i):0}getLabelAndValue(t){const i=this._cachedMeta,r=this.chart,n=r.data.labels||[],o=ds(i._parsed[t],r.options.locale);return{label:n[t]||"",value:o}}getMaxBorderWidth(t){let i=0;const r=this.chart;let n,o,a,s,c;if(!t){for(n=0,o=r.data.datasets.length;n<o;++n)if(r.isDatasetVisible(n)){a=r.getDatasetMeta(n),t=a.data,s=a.controller;break}}if(!t)return 0;for(n=0,o=t.length;n<o;++n)c=s.resolveDataElementOptions(n),c.borderAlign!=="inner"&&(i=Math.max(i,c.borderWidth||0,c.hoverBorderWidth||0));return i}getMaxOffset(t){let i=0;for(let r=0,n=t.length;r<n;++r){const o=this.resolveDataElementOptions(r);i=Math.max(i,o.offset||0,o.hoverOffset||0)}return i}_getRingWeightOffset(t){let i=0;for(let r=0;r<t;++r)this.chart.isDatasetVisible(r)&&(i+=this._getRingWeight(r));return i}_getRingWeight(t){return Math.max(Z(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class ex extends bs{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const i=this._cachedMeta,{dataset:r,data:n=[],_dataset:o}=i,a=this.chart._animationsDisabled;let{start:s,count:c}=C_(i,n,a);this._drawStart=s,this._drawCount=c,U_(i)&&(s=0,c=n.length),r._chart=this.chart,r._datasetIndex=this.index,r._decimated=!!o._decimated,r.points=n;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(r,void 0,{animated:!a,options:l},t),this.updateElements(n,s,c,t)}updateElements(t,i,r,n){const o=n==="reset",{iScale:a,vScale:s,_stacked:c,_dataset:l}=this._cachedMeta,{sharedOptions:u,includeOptions:d}=this._getSharedOptions(i,n),f=a.axis,h=s.axis,{spanGaps:g,segment:m}=this.options,p=wn(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||n==="none",_=i+r,k=t.length;let x=i>0&&this.getParsed(i-1);for(let y=0;y<k;++y){const z=t[y],T=b?z:{};if(y<i||y>=_){T.skip=!0;continue}const I=this.getParsed(y),E=X(I[h]),R=T[f]=a.getPixelForValue(I[f],y),A=T[h]=o||E?s.getBasePixel():s.getPixelForValue(c?this.applyStack(s,I,c):I[h],y);T.skip=isNaN(R)||isNaN(A)||E,T.stop=y>0&&Math.abs(I[f]-x[f])>p,m&&(T.parsed=I,T.raw=l.data[y]),d&&(T.options=u||this.resolveDataElementOptions(y,z.active?"active":n)),b||this.updateElement(z,y,T,n),x=I}}getMaxOverflow(){const t=this._cachedMeta,i=t.dataset,r=i.options&&i.options.borderWidth||0,n=t.data||[];if(!n.length)return r;const o=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(r,o,a)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}class tx extends Q${static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}}function dt(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ys{static override(t){Object.assign(ys.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return dt()}parse(){return dt()}format(){return dt()}add(){return dt()}diff(){return dt()}startOf(){return dt()}endOf(){return dt()}}var nx={_date:ys};function ix(e,t,i,r){const{controller:n,data:o,_sorted:a}=e,s=n._cachedMeta.iScale,c=e.dataset&&e.dataset.options?e.dataset.options.spanGaps:null;if(s&&t===s.axis&&t!=="r"&&a&&o.length){const l=s._reversePixels?O_:pt;if(r){if(n._sharedOptions){const u=o[0],d=typeof u.getRange=="function"&&u.getRange(t);if(d){const f=l(o,t,i-d),h=l(o,t,i+d);return{lo:f.lo,hi:h.hi}}}}else{const u=l(o,t,i);if(c){const{vScale:d}=n._cachedMeta,{_parsed:f}=e,h=f.slice(0,u.lo+1).reverse().findIndex(m=>!X(m[d.axis]));u.lo-=Math.max(0,h);const g=f.slice(u.hi).findIndex(m=>!X(m[d.axis]));u.hi+=Math.max(0,g)}return u}}return{lo:0,hi:o.length-1}}function Pr(e,t,i,r,n){const o=e.getSortedVisibleDatasetMetas(),a=i[t];for(let s=0,c=o.length;s<c;++s){const{index:l,data:u}=o[s],{lo:d,hi:f}=ix(o[s],t,a,n);for(let h=d;h<=f;++h){const g=u[h];g.skip||r(g,l,h)}}}function rx(e){const t=e.indexOf("x")!==-1,i=e.indexOf("y")!==-1;return function(r,n){const o=t?Math.abs(r.x-n.x):0,a=i?Math.abs(r.y-n.y):0;return Math.sqrt(Math.pow(o,2)+Math.pow(a,2))}}function Zr(e,t,i,r,n){const o=[];return!n&&!e.isPointInArea(t)||Pr(e,i,t,function(s,c,l){!n&&!zn(s,e.chartArea,0)||s.inRange(t.x,t.y,r)&&o.push({element:s,datasetIndex:c,index:l})},!0),o}function ox(e,t,i,r){let n=[];function o(a,s,c){const{startAngle:l,endAngle:u}=a.getProps(["startAngle","endAngle"],r),{angle:d}=vg(a,{x:t.x,y:t.y});In(d,l,u)&&n.push({element:a,datasetIndex:s,index:c})}return Pr(e,i,t,o),n}function ax(e,t,i,r,n,o){let a=[];const s=rx(i);let c=Number.POSITIVE_INFINITY;function l(u,d,f){const h=u.inRange(t.x,t.y,n);if(r&&!h)return;const g=u.getCenterPoint(n);if(!(!!o||e.isPointInArea(g))&&!h)return;const p=s(t,g);p<c?(a=[{element:u,datasetIndex:d,index:f}],c=p):p===c&&a.push({element:u,datasetIndex:d,index:f})}return Pr(e,i,t,l),a}function Br(e,t,i,r,n,o){return!o&&!e.isPointInArea(t)?[]:i==="r"&&!r?ox(e,t,i,n):ax(e,t,i,r,n,o)}function bc(e,t,i,r,n){const o=[],a=i==="x"?"inXRange":"inYRange";let s=!1;return Pr(e,i,t,(c,l,u)=>{c[a]&&c[a](t[i],n)&&(o.push({element:c,datasetIndex:l,index:u}),s=s||c.inRange(t.x,t.y,n))}),r&&!s?[]:o}var sx={modes:{index(e,t,i,r){const n=ft(t,e),o=i.axis||"x",a=i.includeInvisible||!1,s=i.intersect?Zr(e,n,o,r,a):Br(e,n,o,!1,r,a),c=[];return s.length?(e.getSortedVisibleDatasetMetas().forEach(l=>{const u=s[0].index,d=l.data[u];d&&!d.skip&&c.push({element:d,datasetIndex:l.index,index:u})}),c):[]},dataset(e,t,i,r){const n=ft(t,e),o=i.axis||"xy",a=i.includeInvisible||!1;let s=i.intersect?Zr(e,n,o,r,a):Br(e,n,o,!1,r,a);if(s.length>0){const c=s[0].datasetIndex,l=e.getDatasetMeta(c).data;s=[];for(let u=0;u<l.length;++u)s.push({element:l[u],datasetIndex:c,index:u})}return s},point(e,t,i,r){const n=ft(t,e),o=i.axis||"xy",a=i.includeInvisible||!1;return Zr(e,n,o,r,a)},nearest(e,t,i,r){const n=ft(t,e),o=i.axis||"xy",a=i.includeInvisible||!1;return Br(e,n,o,i.intersect,r,a)},x(e,t,i,r){const n=ft(t,e);return bc(e,n,"x",i.intersect,r)},y(e,t,i,r){const n=ft(t,e);return bc(e,n,"y",i.intersect,r)}}};const Ag=["left","top","right","bottom"];function nn(e,t){return e.filter(i=>i.pos===t)}function yc(e,t){return e.filter(i=>Ag.indexOf(i.pos)===-1&&i.box.axis===t)}function rn(e,t){return e.sort((i,r)=>{const n=t?r:i,o=t?i:r;return n.weight===o.weight?n.index-o.index:n.weight-o.weight})}function cx(e){const t=[];let i,r,n,o,a,s;for(i=0,r=(e||[]).length;i<r;++i)n=e[i],{position:o,options:{stack:a,stackWeight:s=1}}=n,t.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:s});return t}function lx(e){const t={};for(const i of e){const{stack:r,pos:n,stackWeight:o}=i;if(!r||!Ag.includes(n))continue;const a=t[r]||(t[r]={count:0,placed:0,weight:0,size:0});a.count++,a.weight+=o}return t}function ux(e,t){const i=lx(e),{vBoxMaxWidth:r,hBoxMaxHeight:n}=t;let o,a,s;for(o=0,a=e.length;o<a;++o){s=e[o];const{fullSize:c}=s.box,l=i[s.stack],u=l&&s.stackWeight/l.weight;s.horizontal?(s.width=u?u*r:c&&t.availableWidth,s.height=n):(s.width=r,s.height=u?u*n:c&&t.availableHeight)}return i}function dx(e){const t=cx(e),i=rn(t.filter(l=>l.box.fullSize),!0),r=rn(nn(t,"left"),!0),n=rn(nn(t,"right")),o=rn(nn(t,"top"),!0),a=rn(nn(t,"bottom")),s=yc(t,"x"),c=yc(t,"y");return{fullSize:i,leftAndTop:r.concat(o),rightAndBottom:n.concat(c).concat(a).concat(s),chartArea:nn(t,"chartArea"),vertical:r.concat(n).concat(c),horizontal:o.concat(a).concat(s)}}function _c(e,t,i,r){return Math.max(e[i],t[i])+Math.max(e[r],t[r])}function Ng(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function fx(e,t,i,r){const{pos:n,box:o}=i,a=e.maxPadding;if(!B(n)){i.size&&(e[n]-=i.size);const d=r[i.stack]||{size:0,count:1};d.size=Math.max(d.size,i.horizontal?o.height:o.width),i.size=d.size/d.count,e[n]+=i.size}o.getPadding&&Ng(a,o.getPadding());const s=Math.max(0,t.outerWidth-_c(a,e,"left","right")),c=Math.max(0,t.outerHeight-_c(a,e,"top","bottom")),l=s!==e.w,u=c!==e.h;return e.w=s,e.h=c,i.horizontal?{same:l,other:u}:{same:u,other:l}}function hx(e){const t=e.maxPadding;function i(r){const n=Math.max(t[r]-e[r],0);return e[r]+=n,n}e.y+=i("top"),e.x+=i("left"),i("right"),i("bottom")}function mx(e,t){const i=t.maxPadding;function r(n){const o={left:0,top:0,right:0,bottom:0};return n.forEach(a=>{o[a]=Math.max(t[a],i[a])}),o}return r(e?["left","right"]:["top","bottom"])}function ln(e,t,i,r){const n=[];let o,a,s,c,l,u;for(o=0,a=e.length,l=0;o<a;++o){s=e[o],c=s.box,c.update(s.width||t.w,s.height||t.h,mx(s.horizontal,t));const{same:d,other:f}=fx(t,i,s,r);l|=d&&n.length,u=u||f,c.fullSize||n.push(s)}return l&&ln(n,t,i,r)||u}function hi(e,t,i,r,n){e.top=i,e.left=t,e.right=t+r,e.bottom=i+n,e.width=r,e.height=n}function $c(e,t,i,r){const n=i.padding;let{x:o,y:a}=t;for(const s of e){const c=s.box,l=r[s.stack]||{placed:0,weight:1},u=s.stackWeight/l.weight||1;if(s.horizontal){const d=t.w*u,f=l.size||c.height;Pi(l.start)&&(a=l.start),c.fullSize?hi(c,n.left,a,i.outerWidth-n.right-n.left,f):hi(c,t.left+l.placed,a,d,f),l.start=a,l.placed+=d,a=c.bottom}else{const d=t.h*u,f=l.size||c.width;Pi(l.start)&&(o=l.start),c.fullSize?hi(c,o,n.top,f,i.outerHeight-n.bottom-n.top):hi(c,o,t.top+l.placed,f,d),l.start=o,l.placed+=d,o=c.right}}t.x=o,t.y=a}var Ye={addBox(e,t){e.boxes||(e.boxes=[]),t.fullSize=t.fullSize||!1,t.position=t.position||"top",t.weight=t.weight||0,t._layers=t._layers||function(){return[{z:0,draw(i){t.draw(i)}}]},e.boxes.push(t)},removeBox(e,t){const i=e.boxes?e.boxes.indexOf(t):-1;i!==-1&&e.boxes.splice(i,1)},configure(e,t,i){t.fullSize=i.fullSize,t.position=i.position,t.weight=i.weight},update(e,t,i,r){if(!e)return;const n=Pe(e.options.layout.padding),o=Math.max(t-n.width,0),a=Math.max(i-n.height,0),s=dx(e.boxes),c=s.vertical,l=s.horizontal;V(e.boxes,m=>{typeof m.beforeLayout=="function"&&m.beforeLayout()});const u=c.reduce((m,p)=>p.box.options&&p.box.options.display===!1?m:m+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/u,hBoxMaxHeight:a/2}),f=Object.assign({},n);Ng(f,Pe(r));const h=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),g=ux(c.concat(l),d);ln(s.fullSize,h,d,g),ln(c,h,d,g),ln(l,h,d,g)&&ln(c,h,d,g),hx(h),$c(s.leftAndTop,h,d,g),h.x+=h.w,h.y+=h.h,$c(s.rightAndBottom,h,d,g),e.chartArea={left:h.left,top:h.top,right:h.left+h.w,bottom:h.top+h.h,height:h.h,width:h.w},V(s.chartArea,m=>{const p=m.box;Object.assign(p,e.chartArea),p.update(h.w,h.h,{left:0,top:0,right:0,bottom:0})})}};class Rg{acquireContext(t,i){}releaseContext(t){return!1}addEventListener(t,i,r){}removeEventListener(t,i,r){}getDevicePixelRatio(){return 1}getMaximumSize(t,i,r,n){return i=Math.max(0,i||t.width),r=r||t.height,{width:i,height:Math.max(0,n?Math.floor(i/n):r)}}isAttached(t){return!0}updateConfig(t){}}class gx extends Rg{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const yi="$chartjs",px={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},xc=e=>e===null||e==="";function vx(e,t){const i=e.style,r=e.getAttribute("height"),n=e.getAttribute("width");if(e[yi]={initial:{height:r,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",xc(n)){const o=cc(e,"width");o!==void 0&&(e.width=o)}if(xc(r))if(e.style.height==="")e.height=e.width/(t||2);else{const o=cc(e,"height");o!==void 0&&(e.height=o)}return e}const Lg=I$?{passive:!0}:!1;function bx(e,t,i){e&&e.addEventListener(t,i,Lg)}function yx(e,t,i){e&&e.canvas&&e.canvas.removeEventListener(t,i,Lg)}function _x(e,t){const i=px[e.type]||e.type,{x:r,y:n}=ft(e,t);return{type:i,chart:t,native:e,x:r!==void 0?r:null,y:n!==void 0?n:null}}function Ci(e,t){for(const i of e)if(i===t||i.contains(t))return!0}function $x(e,t,i){const r=e.canvas,n=new MutationObserver(o=>{let a=!1;for(const s of o)a=a||Ci(s.addedNodes,r),a=a&&!Ci(s.removedNodes,r);a&&i()});return n.observe(document,{childList:!0,subtree:!0}),n}function xx(e,t,i){const r=e.canvas,n=new MutationObserver(o=>{let a=!1;for(const s of o)a=a||Ci(s.removedNodes,r),a=a&&!Ci(s.addedNodes,r);a&&i()});return n.observe(document,{childList:!0,subtree:!0}),n}const Tn=new Map;let kc=0;function Fg(){const e=window.devicePixelRatio;e!==kc&&(kc=e,Tn.forEach((t,i)=>{i.currentDevicePixelRatio!==e&&t()}))}function kx(e,t){Tn.size||window.addEventListener("resize",Fg),Tn.set(e,t)}function Sx(e){Tn.delete(e),Tn.size||window.removeEventListener("resize",Fg)}function wx(e,t,i){const r=e.canvas,n=r&&vs(r);if(!n)return;const o=_g((s,c)=>{const l=n.clientWidth;i(s,c),l<n.clientWidth&&i()},window),a=new ResizeObserver(s=>{const c=s[0],l=c.contentRect.width,u=c.contentRect.height;l===0&&u===0||o(l,u)});return a.observe(n),kx(e,o),a}function Wr(e,t,i){i&&i.disconnect(),t==="resize"&&Sx(e)}function Ix(e,t,i){const r=e.canvas,n=_g(o=>{e.ctx!==null&&i(_x(o,e))},e);return bx(r,t,n),n}class zx extends Rg{acquireContext(t,i){const r=t&&t.getContext&&t.getContext("2d");return r&&r.canvas===t?(vx(t,i),r):null}releaseContext(t){const i=t.canvas;if(!i[yi])return!1;const r=i[yi].initial;["height","width"].forEach(o=>{const a=r[o];X(a)?i.removeAttribute(o):i.setAttribute(o,a)});const n=r.style||{};return Object.keys(n).forEach(o=>{i.style[o]=n[o]}),i.width=i.width,delete i[yi],!0}addEventListener(t,i,r){this.removeEventListener(t,i);const n=t.$proxies||(t.$proxies={}),a={attach:$x,detach:xx,resize:wx}[i]||Ix;n[i]=a(t,i,r)}removeEventListener(t,i){const r=t.$proxies||(t.$proxies={}),n=r[i];if(!n)return;({attach:Wr,detach:Wr,resize:Wr}[i]||yx)(t,i,n),r[i]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,i,r,n){return w$(t,i,r,n)}isAttached(t){const i=t&&vs(t);return!!(i&&i.isConnected)}}function Tx(e){return!ps()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?gx:zx}class wt{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:i,y:r}=this.getProps(["x","y"],t);return{x:i,y:r}}hasValue(){return wn(this.x)&&wn(this.y)}getProps(t,i){const r=this.$animations;if(!i||!r)return this;const n={};return t.forEach(o=>{n[o]=r[o]&&r[o].active()?r[o]._to:this[o]}),n}}function Ox(e,t){const i=e.options.ticks,r=Dx(e),n=Math.min(i.maxTicksLimit||r,r),o=i.major.enabled?Ex(t):[],a=o.length,s=o[0],c=o[a-1],l=[];if(a>n)return jx(t,l,o,a/n),l;const u=Px(o,t,n);if(a>0){let d,f;const h=a>1?Math.round((c-s)/(a-1)):null;for(mi(t,l,u,X(h)?0:s-h,s),d=0,f=a-1;d<f;d++)mi(t,l,u,o[d],o[d+1]);return mi(t,l,u,c,X(h)?t.length:c+h),l}return mi(t,l,u),l}function Dx(e){const t=e.options.offset,i=e._tickSize(),r=e._length/i+(t?0:1),n=e._maxLength/i;return Math.floor(Math.min(r,n))}function Px(e,t,i){const r=Mx(e),n=t.length/i;if(!r)return Math.max(n,1);const o=x_(r);for(let a=0,s=o.length-1;a<s;a++){const c=o[a];if(c>n)return c}return Math.max(n,1)}function Ex(e){const t=[];let i,r;for(i=0,r=e.length;i<r;i++)e[i].major&&t.push(i);return t}function jx(e,t,i,r){let n=0,o=i[0],a;for(r=Math.ceil(r),a=0;a<e.length;a++)a===o&&(t.push(e[a]),n++,o=i[n*r])}function mi(e,t,i,r,n){const o=Z(r,0),a=Math.min(Z(n,e.length),e.length);let s=0,c,l,u;for(i=Math.ceil(i),n&&(c=n-r,i=c/Math.floor(c/i)),u=o;u<0;)s++,u=Math.round(o+s*i);for(l=Math.max(o,0);l<a;l++)l===u&&(t.push(e[l]),s++,u=Math.round(o+s*i))}function Mx(e){const t=e.length;let i,r;if(t<2)return!1;for(r=e[0],i=1;i<t;++i)if(e[i]-e[i-1]!==r)return!1;return r}const Cx=e=>e==="left"?"right":e==="right"?"left":e,Sc=(e,t,i)=>t==="top"||t==="left"?e[t]+i:e[t]-i,wc=(e,t)=>Math.min(t||e,e);function Ic(e,t){const i=[],r=e.length/t,n=e.length;let o=0;for(;o<n;o+=r)i.push(e[Math.floor(o)]);return i}function Ux(e,t,i){const r=e.ticks.length,n=Math.min(t,r-1),o=e._startPixel,a=e._endPixel,s=1e-6;let c=e.getPixelForTick(n),l;if(!(i&&(r===1?l=Math.max(c-o,a-c):t===0?l=(e.getPixelForTick(1)-c)/2:l=(c-e.getPixelForTick(n-1))/2,c+=n<t?l:-l,c<o-s||c>a+s)))return c}function Ax(e,t){V(e,i=>{const r=i.gc,n=r.length/2;let o;if(n>t){for(o=0;o<n;++o)delete i.data[r[o]];r.splice(0,n)}})}function on(e){return e.drawTicks?e.tickLength:0}function zc(e,t){if(!e.display)return 0;const i=be(e.font,t),r=Pe(e.padding);return(ae(e.text)?e.text.length:1)*i.lineHeight+r.height}function Nx(e,t){return St(e,{scale:t,type:"scale"})}function Rx(e,t,i){return St(e,{tick:i,index:t,type:"tick"})}function Lx(e,t,i){let r=$g(e);return(i&&t!=="right"||!i&&t==="right")&&(r=Cx(r)),r}function Fx(e,t,i,r){const{top:n,left:o,bottom:a,right:s,chart:c}=e,{chartArea:l,scales:u}=c;let d=0,f,h,g;const m=a-n,p=s-o;if(e.isHorizontal()){if(h=ye(r,o,s),B(i)){const b=Object.keys(i)[0],_=i[b];g=u[b].getPixelForValue(_)+m-t}else i==="center"?g=(l.bottom+l.top)/2+m-t:g=Sc(e,i,t);f=s-o}else{if(B(i)){const b=Object.keys(i)[0],_=i[b];h=u[b].getPixelForValue(_)-p+t}else i==="center"?h=(l.left+l.right)/2-p+t:h=Sc(e,i,t);g=ye(r,a,n),d=i==="left"?-oe:oe}return{titleX:h,titleY:g,maxWidth:f,rotation:d}}class Kt extends wt{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,i){return t}getUserBounds(){let{_userMin:t,_userMax:i,_suggestedMin:r,_suggestedMax:n}=this;return t=Ee(t,Number.POSITIVE_INFINITY),i=Ee(i,Number.NEGATIVE_INFINITY),r=Ee(r,Number.POSITIVE_INFINITY),n=Ee(n,Number.NEGATIVE_INFINITY),{min:Ee(t,r),max:Ee(i,n),minDefined:fe(t),maxDefined:fe(i)}}getMinMax(t){let{min:i,max:r,minDefined:n,maxDefined:o}=this.getUserBounds(),a;if(n&&o)return{min:i,max:r};const s=this.getMatchingVisibleMetas();for(let c=0,l=s.length;c<l;++c)a=s[c].controller.getMinMax(this,t),n||(i=Math.min(i,a.min)),o||(r=Math.max(r,a.max));return i=o&&i>r?r:i,r=n&&i>r?i:r,{min:Ee(i,Ee(r,i)),max:Ee(r,Ee(i,r))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){G(this.options.beforeUpdate,[this])}update(t,i,r){const{beginAtZero:n,grace:o,ticks:a}=this.options,s=a.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=i,this._margins=r=Object.assign({left:0,right:0,top:0,bottom:0},r),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+r.left+r.right:this.height+r.top+r.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=i$(this,o,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const c=s<this.ticks.length;this._convertTicksToLabels(c?Ic(this.ticks,s):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),a.display&&(a.autoSkip||a.source==="auto")&&(this.ticks=Ox(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),c&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t=this.options.reverse,i,r;this.isHorizontal()?(i=this.left,r=this.right):(i=this.top,r=this.bottom,t=!t),this._startPixel=i,this._endPixel=r,this._reversePixels=t,this._length=r-i,this._alignToPixels=this.options.alignToPixels}afterUpdate(){G(this.options.afterUpdate,[this])}beforeSetDimensions(){G(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){G(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),G(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){G(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const i=this.options.ticks;let r,n,o;for(r=0,n=t.length;r<n;r++)o=t[r],o.label=G(i.callback,[o.value,r,t],this)}afterTickToLabelConversion(){G(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){G(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,i=t.ticks,r=wc(this.ticks.length,t.ticks.maxTicksLimit),n=i.minRotation||0,o=i.maxRotation;let a=n,s,c,l;if(!this._isVisible()||!i.display||n>=o||r<=1||!this.isHorizontal()){this.labelRotation=n;return}const u=this._getLabelSizes(),d=u.widest.width,f=u.highest.height,h=me(this.chart.width-d,0,this.maxWidth);s=t.offset?this.maxWidth/r:h/(r-1),d+6>s&&(s=h/(r-(t.offset?.5:1)),c=this.maxHeight-on(t.grid)-i.padding-zc(t.title,this.chart.options.font),l=Math.sqrt(d*d+f*f),a=I_(Math.min(Math.asin(me((u.highest.height+6)/s,-1,1)),Math.asin(me(c/l,-1,1))-Math.asin(me(f/l,-1,1)))),a=Math.max(n,Math.min(o,a))),this.labelRotation=a}afterCalculateLabelRotation(){G(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){G(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:i,options:{ticks:r,title:n,grid:o}}=this,a=this._isVisible(),s=this.isHorizontal();if(a){const c=zc(n,i.options.font);if(s?(t.width=this.maxWidth,t.height=on(o)+c):(t.height=this.maxHeight,t.width=on(o)+c),r.display&&this.ticks.length){const{first:l,last:u,widest:d,highest:f}=this._getLabelSizes(),h=r.padding*2,g=Be(this.labelRotation),m=Math.cos(g),p=Math.sin(g);if(s){const b=r.mirror?0:p*d.width+m*f.height;t.height=Math.min(this.maxHeight,t.height+b+h)}else{const b=r.mirror?0:m*d.width+p*f.height;t.width=Math.min(this.maxWidth,t.width+b+h)}this._calculatePadding(l,u,p,m)}}this._handleMargins(),s?(this.width=this._length=i.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=i.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,i,r,n){const{ticks:{align:o,padding:a},position:s}=this.options,c=this.labelRotation!==0,l=s!=="top"&&this.axis==="x";if(this.isHorizontal()){const u=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let f=0,h=0;c?l?(f=n*t.width,h=r*i.height):(f=r*t.height,h=n*i.width):o==="start"?h=i.width:o==="end"?f=t.width:o!=="inner"&&(f=t.width/2,h=i.width/2),this.paddingLeft=Math.max((f-u+a)*this.width/(this.width-u),0),this.paddingRight=Math.max((h-d+a)*this.width/(this.width-d),0)}else{let u=i.height/2,d=t.height/2;o==="start"?(u=0,d=t.height):o==="end"&&(u=i.height,d=0),this.paddingTop=u+a,this.paddingBottom=d+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){G(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:i}=this.options;return i==="top"||i==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let i,r;for(i=0,r=t.length;i<r;i++)X(t[i].label)&&(t.splice(i,1),r--,i--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const i=this.options.ticks.sampleSize;let r=this.ticks;i<r.length&&(r=Ic(r,i)),this._labelSizes=t=this._computeLabelSizes(r,r.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,i,r){const{ctx:n,_longestTextCache:o}=this,a=[],s=[],c=Math.floor(i/wc(i,r));let l=0,u=0,d,f,h,g,m,p,b,_,k,x,y;for(d=0;d<i;d+=c){if(g=t[d].label,m=this._resolveTickFontOptions(d),n.font=p=m.string,b=o[p]=o[p]||{data:{},gc:[]},_=m.lineHeight,k=x=0,!X(g)&&!ae(g))k=ic(n,b.data,b.gc,k,g),x=_;else if(ae(g))for(f=0,h=g.length;f<h;++f)y=g[f],!X(y)&&!ae(y)&&(k=ic(n,b.data,b.gc,k,y),x+=_);a.push(k),s.push(x),l=Math.max(k,l),u=Math.max(x,u)}Ax(o,i);const z=a.indexOf(l),T=s.indexOf(u),I=E=>({width:a[E]||0,height:s[E]||0});return{first:I(0),last:I(i-1),widest:I(z),highest:I(T),widths:a,heights:s}}getLabelForValue(t){return t}getPixelForValue(t,i){return NaN}getValueForPixel(t){}getPixelForTick(t){const i=this.ticks;return t<0||t>i.length-1?null:this.getPixelForValue(i[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const i=this._startPixel+t*this._length;return T_(this._alignToPixels?ut(this.chart,i,0):i)}getDecimalForPixel(t){const i=(t-this._startPixel)/this._length;return this._reversePixels?1-i:i}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:i}=this;return t<0&&i<0?i:t>0&&i>0?t:0}getContext(t){const i=this.ticks||[];if(t>=0&&t<i.length){const r=i[t];return r.$context||(r.$context=Rx(this.getContext(),t,r))}return this.$context||(this.$context=Nx(this.chart.getContext(),this))}_tickSize(){const t=this.options.ticks,i=Be(this.labelRotation),r=Math.abs(Math.cos(i)),n=Math.abs(Math.sin(i)),o=this._getLabelSizes(),a=t.autoSkipPadding||0,s=o?o.widest.width+a:0,c=o?o.highest.height+a:0;return this.isHorizontal()?c*r>s*n?s/r:c/n:c*n<s*r?c/r:s/n}_isVisible(){const t=this.options.display;return t!=="auto"?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const i=this.axis,r=this.chart,n=this.options,{grid:o,position:a,border:s}=n,c=o.offset,l=this.isHorizontal(),d=this.ticks.length+(c?1:0),f=on(o),h=[],g=s.setContext(this.getContext()),m=g.display?g.width:0,p=m/2,b=function(U){return ut(r,U,m)};let _,k,x,y,z,T,I,E,R,A,F,ie;if(a==="top")_=b(this.bottom),T=this.bottom-f,E=_-p,A=b(t.top)+p,ie=t.bottom;else if(a==="bottom")_=b(this.top),A=t.top,ie=b(t.bottom)-p,T=_+p,E=this.top+f;else if(a==="left")_=b(this.right),z=this.right-f,I=_-p,R=b(t.left)+p,F=t.right;else if(a==="right")_=b(this.left),R=t.left,F=b(t.right)-p,z=_+p,I=this.left+f;else if(i==="x"){if(a==="center")_=b((t.top+t.bottom)/2+.5);else if(B(a)){const U=Object.keys(a)[0],Q=a[U];_=b(this.chart.scales[U].getPixelForValue(Q))}A=t.top,ie=t.bottom,T=_+p,E=T+f}else if(i==="y"){if(a==="center")_=b((t.left+t.right)/2);else if(B(a)){const U=Object.keys(a)[0],Q=a[U];_=b(this.chart.scales[U].getPixelForValue(Q))}z=_-p,I=z-f,R=t.left,F=t.right}const se=Z(n.ticks.maxTicksLimit,d),W=Math.max(1,Math.ceil(d/se));for(k=0;k<d;k+=W){const U=this.getContext(k),Q=o.setContext(U),Oe=s.setContext(U),ce=Q.lineWidth,It=Q.color,ei=Oe.dash||[],zt=Oe.dashOffset,Gt=Q.tickWidth,st=Q.tickColor,Yt=Q.tickBorderDash||[],ct=Q.tickBorderDashOffset;x=Ux(this,k,c),x!==void 0&&(y=ut(r,x,ce),l?z=I=R=F=y:T=E=A=ie=y,h.push({tx1:z,ty1:T,tx2:I,ty2:E,x1:R,y1:A,x2:F,y2:ie,width:ce,color:It,borderDash:ei,borderDashOffset:zt,tickWidth:Gt,tickColor:st,tickBorderDash:Yt,tickBorderDashOffset:ct}))}return this._ticksLength=d,this._borderValue=_,h}_computeLabelItems(t){const i=this.axis,r=this.options,{position:n,ticks:o}=r,a=this.isHorizontal(),s=this.ticks,{align:c,crossAlign:l,padding:u,mirror:d}=o,f=on(r.grid),h=f+u,g=d?-u:h,m=-Be(this.labelRotation),p=[];let b,_,k,x,y,z,T,I,E,R,A,F,ie="middle";if(n==="top")z=this.bottom-g,T=this._getXAxisLabelAlignment();else if(n==="bottom")z=this.top+g,T=this._getXAxisLabelAlignment();else if(n==="left"){const W=this._getYAxisLabelAlignment(f);T=W.textAlign,y=W.x}else if(n==="right"){const W=this._getYAxisLabelAlignment(f);T=W.textAlign,y=W.x}else if(i==="x"){if(n==="center")z=(t.top+t.bottom)/2+h;else if(B(n)){const W=Object.keys(n)[0],U=n[W];z=this.chart.scales[W].getPixelForValue(U)+h}T=this._getXAxisLabelAlignment()}else if(i==="y"){if(n==="center")y=(t.left+t.right)/2-h;else if(B(n)){const W=Object.keys(n)[0],U=n[W];y=this.chart.scales[W].getPixelForValue(U)}T=this._getYAxisLabelAlignment(f).textAlign}i==="y"&&(c==="start"?ie="top":c==="end"&&(ie="bottom"));const se=this._getLabelSizes();for(b=0,_=s.length;b<_;++b){k=s[b],x=k.label;const W=o.setContext(this.getContext(b));I=this.getPixelForTick(b)+o.labelOffset,E=this._resolveTickFontOptions(b),R=E.lineHeight,A=ae(x)?x.length:1;const U=A/2,Q=W.color,Oe=W.textStrokeColor,ce=W.textStrokeWidth;let It=T;a?(y=I,T==="inner"&&(b===_-1?It=this.options.reverse?"left":"right":b===0?It=this.options.reverse?"right":"left":It="center"),n==="top"?l==="near"||m!==0?F=-A*R+R/2:l==="center"?F=-se.highest.height/2-U*R+R:F=-se.highest.height+R/2:l==="near"||m!==0?F=R/2:l==="center"?F=se.highest.height/2-U*R:F=se.highest.height-A*R,d&&(F*=-1),m!==0&&!W.showLabelBackdrop&&(y+=R/2*Math.sin(m))):(z=I,F=(1-A)*R/2);let ei;if(W.showLabelBackdrop){const zt=Pe(W.backdropPadding),Gt=se.heights[b],st=se.widths[b];let Yt=F-zt.top,ct=0-zt.left;switch(ie){case"middle":Yt-=Gt/2;break;case"bottom":Yt-=Gt;break}switch(T){case"center":ct-=st/2;break;case"right":ct-=st;break;case"inner":b===_-1?ct-=st:b>0&&(ct-=st/2);break}ei={left:ct,top:Yt,width:st+zt.width,height:Gt+zt.height,color:W.backdropColor}}p.push({label:x,font:E,textOffset:F,options:{rotation:m,color:Q,strokeColor:Oe,strokeWidth:ce,textAlign:It,textBaseline:ie,translation:[y,z],backdrop:ei}})}return p}_getXAxisLabelAlignment(){const{position:t,ticks:i}=this.options;if(-Be(this.labelRotation))return t==="top"?"left":"right";let n="center";return i.align==="start"?n="left":i.align==="end"?n="right":i.align==="inner"&&(n="inner"),n}_getYAxisLabelAlignment(t){const{position:i,ticks:{crossAlign:r,mirror:n,padding:o}}=this.options,a=this._getLabelSizes(),s=t+o,c=a.widest.width;let l,u;return i==="left"?n?(u=this.right+o,r==="near"?l="left":r==="center"?(l="center",u+=c/2):(l="right",u+=c)):(u=this.right-s,r==="near"?l="right":r==="center"?(l="center",u-=c/2):(l="left",u=this.left)):i==="right"?n?(u=this.left+o,r==="near"?l="right":r==="center"?(l="center",u-=c/2):(l="left",u-=c)):(u=this.left+s,r==="near"?l="left":r==="center"?(l="center",u+=c/2):(l="right",u=this.right)):l="right",{textAlign:l,x:u}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,i=this.options.position;if(i==="left"||i==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(i==="top"||i==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:i},left:r,top:n,width:o,height:a}=this;i&&(t.save(),t.fillStyle=i,t.fillRect(r,n,o,a),t.restore())}getLineWidthForValue(t){const i=this.options.grid;if(!this._isVisible()||!i.display)return 0;const n=this.ticks.findIndex(o=>o.value===t);return n>=0?i.setContext(this.getContext(n)).lineWidth:0}drawGrid(t){const i=this.options.grid,r=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,a;const s=(c,l,u)=>{!u.width||!u.color||(r.save(),r.lineWidth=u.width,r.strokeStyle=u.color,r.setLineDash(u.borderDash||[]),r.lineDashOffset=u.borderDashOffset,r.beginPath(),r.moveTo(c.x,c.y),r.lineTo(l.x,l.y),r.stroke(),r.restore())};if(i.display)for(o=0,a=n.length;o<a;++o){const c=n[o];i.drawOnChartArea&&s({x:c.x1,y:c.y1},{x:c.x2,y:c.y2},c),i.drawTicks&&s({x:c.tx1,y:c.ty1},{x:c.tx2,y:c.ty2},{color:c.tickColor,width:c.tickWidth,borderDash:c.tickBorderDash,borderDashOffset:c.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:i,options:{border:r,grid:n}}=this,o=r.setContext(this.getContext()),a=r.display?o.width:0;if(!a)return;const s=n.setContext(this.getContext(0)).lineWidth,c=this._borderValue;let l,u,d,f;this.isHorizontal()?(l=ut(t,this.left,a)-a/2,u=ut(t,this.right,s)+s/2,d=f=c):(d=ut(t,this.top,a)-a/2,f=ut(t,this.bottom,s)+s/2,l=u=c),i.save(),i.lineWidth=o.width,i.strokeStyle=o.color,i.beginPath(),i.moveTo(l,d),i.lineTo(u,f),i.stroke(),i.restore()}drawLabels(t){if(!this.options.ticks.display)return;const r=this.ctx,n=this._computeLabelArea();n&&Tr(r,n);const o=this.getLabelItems(t);for(const a of o){const s=a.options,c=a.font,l=a.label,u=a.textOffset;ji(r,l,0,u,c,s)}n&&Or(r)}drawTitle(){const{ctx:t,options:{position:i,title:r,reverse:n}}=this;if(!r.display)return;const o=be(r.font),a=Pe(r.padding),s=r.align;let c=o.lineHeight/2;i==="bottom"||i==="center"||B(i)?(c+=a.bottom,ae(r.text)&&(c+=o.lineHeight*(r.text.length-1))):c+=a.top;const{titleX:l,titleY:u,maxWidth:d,rotation:f}=Fx(this,c,i,s);ji(t,r.text,0,0,o,{color:r.color,maxWidth:d,rotation:f,textAlign:Lx(s,i,n),textBaseline:"middle",translation:[l,u]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,i=t.ticks&&t.ticks.z||0,r=Z(t.grid&&t.grid.z,-1),n=Z(t.border&&t.border.z,0);return!this._isVisible()||this.draw!==Kt.prototype.draw?[{z:i,draw:o=>{this.draw(o)}}]:[{z:r,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:n,draw:()=>{this.drawBorder()}},{z:i,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const i=this.chart.getSortedVisibleDatasetMetas(),r=this.axis+"AxisID",n=[];let o,a;for(o=0,a=i.length;o<a;++o){const s=i[o];s[r]===this.id&&(!t||s.type===t)&&n.push(s)}return n}_resolveTickFontOptions(t){const i=this.options.ticks.setContext(this.getContext(t));return be(i.font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class gi{constructor(t,i,r){this.type=t,this.scope=i,this.override=r,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const i=Object.getPrototypeOf(t);let r;Wx(i)&&(r=this.register(i));const n=this.items,o=t.id,a=this.scope+"."+o;if(!o)throw new Error("class does not have id: "+t);return o in n||(n[o]=t,Zx(t,a,r),this.override&&ne.override(t.id,t.overrides)),a}get(t){return this.items[t]}unregister(t){const i=this.items,r=t.id,n=this.scope;r in i&&delete i[r],n&&r in ne[n]&&(delete ne[n][r],this.override&&delete $t[r])}}function Zx(e,t,i){const r=kn(Object.create(null),[i?ne.get(i):{},ne.get(t),e.defaults]);ne.set(t,r),e.defaultRoutes&&Bx(t,e.defaultRoutes),e.descriptors&&ne.describe(t,e.descriptors)}function Bx(e,t){Object.keys(t).forEach(i=>{const r=i.split("."),n=r.pop(),o=[e].concat(r).join("."),a=t[i].split("."),s=a.pop(),c=a.join(".");ne.route(o,n,c,s)})}function Wx(e){return"id"in e&&"defaults"in e}class Vx{constructor(){this.controllers=new gi(bs,"datasets",!0),this.elements=new gi(wt,"elements"),this.plugins=new gi(Object,"plugins"),this.scales=new gi(Kt,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,i,r){[...i].forEach(n=>{const o=r||this._getRegistryForType(n);r||o.isForType(n)||o===this.plugins&&n.id?this._exec(t,o,n):V(n,a=>{const s=r||this._getRegistryForType(a);this._exec(t,s,a)})})}_exec(t,i,r){const n=cs(t);G(r["before"+n],[],r),i[t](r),G(r["after"+n],[],r)}_getRegistryForType(t){for(let i=0;i<this._typedRegistries.length;i++){const r=this._typedRegistries[i];if(r.isForType(t))return r}return this.plugins}_get(t,i,r){const n=i.get(t);if(n===void 0)throw new Error('"'+t+'" is not a registered '+r+".");return n}}var Me=new Vx;class Hx{constructor(){this._init=void 0}notify(t,i,r,n){if(i==="beforeInit"&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install")),this._init===void 0)return;const o=n?this._descriptors(t).filter(n):this._descriptors(t),a=this._notify(o,t,i,r);return i==="afterDestroy"&&(this._notify(o,t,"stop"),this._notify(this._init,t,"uninstall"),this._init=void 0),a}_notify(t,i,r,n){n=n||{};for(const o of t){const a=o.plugin,s=a[r],c=[i,n,o.options];if(G(s,c,a)===!1&&n.cancelable)return!1}return!0}invalidate(){X(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const i=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),i}_createDescriptors(t,i){const r=t&&t.config,n=Z(r.options&&r.options.plugins,{}),o=Jx(r);return n===!1&&!i?[]:Kx(t,o,n,i)}_notifyStateChanges(t){const i=this._oldCache||[],r=this._cache,n=(o,a)=>o.filter(s=>!a.some(c=>s.plugin.id===c.plugin.id));this._notify(n(i,r),t,"stop"),this._notify(n(r,i),t,"start")}}function Jx(e){const t={},i=[],r=Object.keys(Me.plugins.items);for(let o=0;o<r.length;o++)i.push(Me.getPlugin(r[o]));const n=e.plugins||[];for(let o=0;o<n.length;o++){const a=n[o];i.indexOf(a)===-1&&(i.push(a),t[a.id]=!0)}return{plugins:i,localIds:t}}function qx(e,t){return!t&&e===!1?null:e===!0?{}:e}function Kx(e,{plugins:t,localIds:i},r,n){const o=[],a=e.getContext();for(const s of t){const c=s.id,l=qx(r[c],n);l!==null&&o.push({plugin:s,options:Xx(e.config,{plugin:s,local:i[c]},l,a)})}return o}function Xx(e,{plugin:t,local:i},r,n){const o=e.pluginScopeKeys(t),a=e.getOptionScopes(r,o);return i&&t.defaults&&a.push(t.defaults),e.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function lo(e,t){const i=ne.datasets[e]||{};return((t.datasets||{})[e]||{}).indexAxis||t.indexAxis||i.indexAxis||"x"}function Gx(e,t){let i=e;return e==="_index_"?i=t:e==="_value_"&&(i=t==="x"?"y":"x"),i}function Yx(e,t){return e===t?"_index_":"_value_"}function Tc(e){if(e==="x"||e==="y"||e==="r")return e}function Qx(e){if(e==="top"||e==="bottom")return"x";if(e==="left"||e==="right")return"y"}function uo(e,...t){if(Tc(e))return e;for(const i of t){const r=i.axis||Qx(i.position)||e.length>1&&Tc(e[0].toLowerCase());if(r)return r}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Oc(e,t,i){if(i[t+"AxisID"]===e)return{axis:t}}function ek(e,t){if(t.data&&t.data.datasets){const i=t.data.datasets.filter(r=>r.xAxisID===e||r.yAxisID===e);if(i.length)return Oc(e,"x",i[0])||Oc(e,"y",i[0])}return{}}function tk(e,t){const i=$t[e.type]||{scales:{}},r=t.scales||{},n=lo(e.type,t),o=Object.create(null);return Object.keys(r).forEach(a=>{const s=r[a];if(!B(s))return console.error(`Invalid scale configuration for scale: ${a}`);if(s._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${a}`);const c=uo(a,s,ek(a,e),ne.scales[s.type]),l=Yx(c,n),u=i.scales||{};o[a]=fn(Object.create(null),[{axis:c},s,u[c],u[l]])}),e.data.datasets.forEach(a=>{const s=a.type||e.type,c=a.indexAxis||lo(s,t),u=($t[s]||{}).scales||{};Object.keys(u).forEach(d=>{const f=Gx(d,c),h=a[f+"AxisID"]||f;o[h]=o[h]||Object.create(null),fn(o[h],[{axis:f},r[h],u[d]])})}),Object.keys(o).forEach(a=>{const s=o[a];fn(s,[ne.scales[s.type],ne.scale])}),o}function Zg(e){const t=e.options||(e.options={});t.plugins=Z(t.plugins,{}),t.scales=tk(e,t)}function Bg(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function nk(e){return e=e||{},e.data=Bg(e.data),Zg(e),e}const Dc=new Map,Wg=new Set;function pi(e,t){let i=Dc.get(e);return i||(i=t(),Dc.set(e,i),Wg.add(i)),i}const an=(e,t,i)=>{const r=Sn(t,i);r!==void 0&&e.add(r)};class ik{constructor(t){this._config=nk(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Bg(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Zg(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return pi(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,i){return pi(`${t}.transition.${i}`,()=>[[`datasets.${t}.transitions.${i}`,`transitions.${i}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,i){return pi(`${t}-${i}`,()=>[[`datasets.${t}.elements.${i}`,`datasets.${t}`,`elements.${i}`,""]])}pluginScopeKeys(t){const i=t.id,r=this.type;return pi(`${r}-plugin-${i}`,()=>[[`plugins.${i}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,i){const r=this._scopeCache;let n=r.get(t);return(!n||i)&&(n=new Map,r.set(t,n)),n}getOptionScopes(t,i,r){const{options:n,type:o}=this,a=this._cachedScopes(t,r),s=a.get(i);if(s)return s;const c=new Set;i.forEach(u=>{t&&(c.add(t),u.forEach(d=>an(c,t,d))),u.forEach(d=>an(c,n,d)),u.forEach(d=>an(c,$t[o]||{},d)),u.forEach(d=>an(c,ne,d)),u.forEach(d=>an(c,ao,d))});const l=Array.from(c);return l.length===0&&l.push(Object.create(null)),Wg.has(i)&&a.set(i,l),l}chartOptionScopes(){const{options:t,type:i}=this;return[t,$t[i]||{},ne.datasets[i]||{},{type:i},ne,ao]}resolveNamedOptions(t,i,r,n=[""]){const o={$shared:!0},{resolver:a,subPrefixes:s}=Pc(this._resolverCache,t,n);let c=a;if(ok(a,i)){o.$shared=!1,r=it(r)?r():r;const l=this.createResolver(t,r,s);c=Bt(a,r,l)}for(const l of i)o[l]=c[l];return o}createResolver(t,i,r=[""],n){const{resolver:o}=Pc(this._resolverCache,t,r);return B(i)?Bt(o,i,void 0,n):o}}function Pc(e,t,i){let r=e.get(t);r||(r=new Map,e.set(t,r));const n=i.join();let o=r.get(n);return o||(o={resolver:hs(t,i),subPrefixes:i.filter(s=>!s.toLowerCase().includes("hover"))},r.set(n,o)),o}const rk=e=>B(e)&&Object.getOwnPropertyNames(e).some(t=>it(e[t]));function ok(e,t){const{isScriptable:i,isIndexable:r}=Sg(e);for(const n of t){const o=i(n),a=r(n),s=(a||o)&&e[n];if(o&&(it(s)||rk(s))||a&&ae(s))return!0}return!1}var ak="4.5.1";const sk=["top","bottom","left","right","chartArea"];function Ec(e,t){return e==="top"||e==="bottom"||sk.indexOf(e)===-1&&t==="x"}function jc(e,t){return function(i,r){return i[e]===r[e]?i[t]-r[t]:i[e]-r[e]}}function Mc(e){const t=e.chart,i=t.options.animation;t.notifyPlugins("afterRender"),G(i&&i.onComplete,[e],t)}function ck(e){const t=e.chart,i=t.options.animation;G(i&&i.onProgress,[e],t)}function Vg(e){return ps()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const _i={},Cc=e=>{const t=Vg(e);return Object.values(_i).filter(i=>i.canvas===t).pop()};function lk(e,t,i){const r=Object.keys(e);for(const n of r){const o=+n;if(o>=t){const a=e[n];delete e[n],(i>0||o>t)&&(e[o+i]=a)}}}function uk(e,t,i,r){return!i||e.type==="mouseout"?null:r?t:e}class Pt{static defaults=ne;static instances=_i;static overrides=$t;static registry=Me;static version=ak;static getChart=Cc;static register(...t){Me.add(...t),Uc()}static unregister(...t){Me.remove(...t),Uc()}constructor(t,i){const r=this.config=new ik(i),n=Vg(t),o=Cc(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=r.createResolver(r.chartOptionScopes(),this.getContext());this.platform=new(r.platform||Tx(n)),this.platform.updateConfig(r);const s=this.platform.acquireContext(n,a.aspectRatio),c=s&&s.canvas,l=c&&c.height,u=c&&c.width;if(this.id=h_(),this.ctx=s,this.canvas=c,this.width=u,this.height=l,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Hx,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=j_(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],_i[this.id]=this,!s||!c){console.error("Failed to create chart: can't acquire context from the given item");return}Le.listen(this,"complete",Mc),Le.listen(this,"progress",ck),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:i},width:r,height:n,_aspectRatio:o}=this;return X(t)?i&&o?o:n?r/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Me}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():sc(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return rc(this.canvas,this.ctx),this}stop(){return Le.stop(this),this}resize(t,i){Le.running(this)?this._resizeBeforeDraw={width:t,height:i}:this._resize(t,i)}_resize(t,i){const r=this.options,n=this.canvas,o=r.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(n,t,i,o),s=r.devicePixelRatio||this.platform.getDevicePixelRatio(),c=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,sc(this,s,!0)&&(this.notifyPlugins("resize",{size:a}),G(r.onResize,[this,a],this),this.attached&&this._doResize(c)&&this.render())}ensureScalesHaveIDs(){const i=this.options.scales||{};V(i,(r,n)=>{r.id=n})}buildOrUpdateScales(){const t=this.options,i=t.scales,r=this.scales,n=Object.keys(r).reduce((a,s)=>(a[s]=!1,a),{});let o=[];i&&(o=o.concat(Object.keys(i).map(a=>{const s=i[a],c=uo(a,s),l=c==="r",u=c==="x";return{options:s,dposition:l?"chartArea":u?"bottom":"left",dtype:l?"radialLinear":u?"category":"linear"}}))),V(o,a=>{const s=a.options,c=s.id,l=uo(c,s),u=Z(s.type,a.dtype);(s.position===void 0||Ec(s.position,l)!==Ec(a.dposition))&&(s.position=a.dposition),n[c]=!0;let d=null;if(c in r&&r[c].type===u)d=r[c];else{const f=Me.getScale(u);d=new f({id:c,type:u,ctx:this.ctx,chart:this}),r[d.id]=d}d.init(s,t)}),V(n,(a,s)=>{a||delete r[s]}),V(r,a=>{Ye.configure(this,a,a.options),Ye.addBox(this,a)})}_updateMetasets(){const t=this._metasets,i=this.data.datasets.length,r=t.length;if(t.sort((n,o)=>n.index-o.index),r>i){for(let n=i;n<r;++n)this._destroyDatasetMeta(n);t.splice(i,r-i)}this._sortedMetasets=t.slice(0).sort(jc("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:i}}=this;t.length>i.length&&delete this._stacks,t.forEach((r,n)=>{i.filter(o=>o===r._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){const t=[],i=this.data.datasets;let r,n;for(this._removeUnreferencedMetasets(),r=0,n=i.length;r<n;r++){const o=i[r];let a=this.getDatasetMeta(r);const s=o.type||this.config.type;if(a.type&&a.type!==s&&(this._destroyDatasetMeta(r),a=this.getDatasetMeta(r)),a.type=s,a.indexAxis=o.indexAxis||lo(s,this.options),a.order=o.order||0,a.index=r,a.label=""+o.label,a.visible=this.isDatasetVisible(r),a.controller)a.controller.updateIndex(r),a.controller.linkScales();else{const c=Me.getController(s),{datasetElementType:l,dataElementType:u}=ne.datasets[s];Object.assign(c,{dataElementType:Me.getElement(u),datasetElementType:l&&Me.getElement(l)}),a.controller=new c(this,r),t.push(a.controller)}}return this._updateMetasets(),t}_resetElements(){V(this.data.datasets,(t,i)=>{this.getDatasetMeta(i).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const i=this.config;i.update();const r=this._options=i.createResolver(i.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!r.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let l=0,u=this.data.datasets.length;l<u;l++){const{controller:d}=this.getDatasetMeta(l),f=!n&&o.indexOf(d)===-1;d.buildOrUpdateElements(f),a=Math.max(+d.getMaxOverflow(),a)}a=this._minPadding=r.layout.autoPadding?a:0,this._updateLayout(a),n||V(o,l=>{l.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(jc("z","_idx"));const{_active:s,_lastEvent:c}=this;c?this._eventHandler(c,!0):s.length&&this._updateHoverStyles(s,s,!0),this.render()}_updateScales(){V(this.scales,t=>{Ye.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,i=new Set(Object.keys(this._listeners)),r=new Set(t.events);(!qs(i,r)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,i=this._getUniformDataChanges()||[];for(const{method:r,start:n,count:o}of i){const a=r==="_removeElements"?-o:o;lk(t,n,a)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const i=this.data.datasets.length,r=o=>new Set(t.filter(a=>a[0]===o).map((a,s)=>s+","+a.splice(1).join(","))),n=r(0);for(let o=1;o<i;o++)if(!qs(n,r(o)))return;return Array.from(n).map(o=>o.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;Ye.update(this,this.width,this.height,t);const i=this.chartArea,r=i.width<=0||i.height<=0;this._layers=[],V(this.boxes,n=>{r&&n.position==="chartArea"||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,o)=>{n._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let i=0,r=this.data.datasets.length;i<r;++i)this.getDatasetMeta(i).controller.configure();for(let i=0,r=this.data.datasets.length;i<r;++i)this._updateDataset(i,it(t)?t({datasetIndex:i}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,i){const r=this.getDatasetMeta(t),n={meta:r,index:t,mode:i,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",n)!==!1&&(r.controller._update(i),n.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",n))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(Le.has(this)?this.attached&&!Le.running(this)&&Le.start(this):(this.draw(),Mc({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:r,height:n}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(r,n)}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const i=this._layers;for(t=0;t<i.length&&i[t].z<=0;++t)i[t].draw(this.chartArea);for(this._drawDatasets();t<i.length;++t)i[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const i=this._sortedMetasets,r=[];let n,o;for(n=0,o=i.length;n<o;++n){const a=i[n];(!t||a.visible)&&r.push(a)}return r}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const t=this.getSortedVisibleDatasetMetas();for(let i=t.length-1;i>=0;--i)this._drawDataset(t[i]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const i=this.ctx,r={meta:t,index:t.index,cancelable:!0},n=Mg(this,t);this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(n&&Tr(i,n),t.controller.draw(),n&&Or(i),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return zn(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,i,r,n){const o=sx.modes[i];return typeof o=="function"?o(this,t,r,n):[]}getDatasetMeta(t){const i=this.data.datasets[t],r=this._metasets;let n=r.filter(o=>o&&o._dataset===i).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:i&&i.order||0,index:t,_dataset:i,_parsed:[],_sorted:!1},r.push(n)),n}getContext(){return this.$context||(this.$context=St(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const i=this.data.datasets[t];if(!i)return!1;const r=this.getDatasetMeta(t);return typeof r.hidden=="boolean"?!r.hidden:!i.hidden}setDatasetVisibility(t,i){const r=this.getDatasetMeta(t);r.hidden=!i}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,i,r){const n=r?"show":"hide",o=this.getDatasetMeta(t),a=o.controller._resolveAnimations(void 0,n);Pi(i)?(o.data[i].hidden=!r,this.update()):(this.setDatasetVisibility(t,r),a.update(o,{visible:r}),this.update(s=>s.datasetIndex===t?n:void 0))}hide(t,i){this._updateVisibility(t,i,!1)}show(t,i){this._updateVisibility(t,i,!0)}_destroyDatasetMeta(t){const i=this._metasets[t];i&&i.controller&&i.controller._destroy(),delete this._metasets[t]}_stop(){let t,i;for(this.stop(),Le.remove(this),t=0,i=this.data.datasets.length;t<i;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:i}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),rc(t,i),this.platform.releaseContext(i),this.canvas=null,this.ctx=null),delete _i[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,i=this.platform,r=(o,a)=>{i.addEventListener(this,o,a),t[o]=a},n=(o,a,s)=>{o.offsetX=a,o.offsetY=s,this._eventHandler(o)};V(this.options.events,o=>r(o,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,i=this.platform,r=(c,l)=>{i.addEventListener(this,c,l),t[c]=l},n=(c,l)=>{t[c]&&(i.removeEventListener(this,c,l),delete t[c])},o=(c,l)=>{this.canvas&&this.resize(c,l)};let a;const s=()=>{n("attach",s),this.attached=!0,this.resize(),r("resize",o),r("detach",a)};a=()=>{this.attached=!1,n("resize",o),this._stop(),this._resize(0,0),r("attach",s)},i.isAttached(this.canvas)?s():a()}unbindEvents(){V(this._listeners,(t,i)=>{this.platform.removeEventListener(this,i,t)}),this._listeners={},V(this._responsiveListeners,(t,i)=>{this.platform.removeEventListener(this,i,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,i,r){const n=r?"set":"remove";let o,a,s,c;for(i==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+n+"DatasetHoverStyle"]()),s=0,c=t.length;s<c;++s){a=t[s];const l=a&&this.getDatasetMeta(a.datasetIndex).controller;l&&l[n+"HoverStyle"](a.element,a.datasetIndex,a.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const i=this._active||[],r=t.map(({datasetIndex:o,index:a})=>{const s=this.getDatasetMeta(o);if(!s)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:s.data[a],index:a}});!Oi(r,i)&&(this._active=r,this._lastEvent=null,this._updateHoverStyles(r,i))}notifyPlugins(t,i,r){return this._plugins.notify(this,t,i,r)}isPluginEnabled(t){return this._plugins._cache.filter(i=>i.plugin.id===t).length===1}_updateHoverStyles(t,i,r){const n=this.options.hover,o=(c,l)=>c.filter(u=>!l.some(d=>u.datasetIndex===d.datasetIndex&&u.index===d.index)),a=o(i,t),s=r?t:o(t,i);a.length&&this.updateHoverStyle(a,n.mode,!1),s.length&&n.mode&&this.updateHoverStyle(s,n.mode,!0)}_eventHandler(t,i){const r={event:t,replay:i,cancelable:!0,inChartArea:this.isPointInArea(t)},n=a=>(a.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",r,n)===!1)return;const o=this._handleEvent(t,i,r.inChartArea);return r.cancelable=!1,this.notifyPlugins("afterEvent",r,n),(o||r.changed)&&this.render(),this}_handleEvent(t,i,r){const{_active:n=[],options:o}=this,a=i,s=this._getActiveElements(t,n,r,a),c=y_(t),l=uk(t,this._lastEvent,r,c);r&&(this._lastEvent=null,G(o.onHover,[t,s,this],this),c&&G(o.onClick,[t,s,this],this));const u=!Oi(s,n);return(u||i)&&(this._active=s,this._updateHoverStyles(s,n,i)),this._lastEvent=l,u}_getActiveElements(t,i,r,n){if(t.type==="mouseout")return[];if(!r)return i;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,n)}}function Uc(){return V(Pt.instances,e=>e._plugins.invalidate())}function dk(e,t,i){const{startAngle:r,x:n,y:o,outerRadius:a,innerRadius:s,options:c}=t,{borderWidth:l,borderJoinStyle:u}=c,d=Math.min(l/a,_e(r-i));if(e.beginPath(),e.arc(n,o,a-l/2,r+d/2,i-d/2),s>0){const f=Math.min(l/s,_e(r-i));e.arc(n,o,s+l/2,i-f/2,r+f/2,!0)}else{const f=Math.min(l/2,a*_e(r-i));if(u==="round")e.arc(n,o,f,i-J/2,r+J/2,!0);else if(u==="bevel"){const h=2*f*f,g=-h*Math.cos(i+J/2)+n,m=-h*Math.sin(i+J/2)+o,p=h*Math.cos(r+J/2)+n,b=h*Math.sin(r+J/2)+o;e.lineTo(g,m),e.lineTo(p,b)}}e.closePath(),e.moveTo(0,0),e.rect(0,0,e.canvas.width,e.canvas.height),e.clip("evenodd")}function fk(e,t,i){const{startAngle:r,pixelMargin:n,x:o,y:a,outerRadius:s,innerRadius:c}=t;let l=n/s;e.beginPath(),e.arc(o,a,s,r-l,i+l),c>n?(l=n/c,e.arc(o,a,c,i+l,r-l,!0)):e.arc(o,a,n,i+oe,r-oe),e.closePath(),e.clip()}function hk(e){return fs(e,["outerStart","outerEnd","innerStart","innerEnd"])}function mk(e,t,i,r){const n=hk(e.options.borderRadius),o=(i-t)/2,a=Math.min(o,r*t/2),s=c=>{const l=(i-Math.min(o,c))*r/2;return me(c,0,Math.min(o,l))};return{outerStart:s(n.outerStart),outerEnd:s(n.outerEnd),innerStart:me(n.innerStart,0,a),innerEnd:me(n.innerEnd,0,a)}}function Dt(e,t,i,r){return{x:i+e*Math.cos(t),y:r+e*Math.sin(t)}}function Ui(e,t,i,r,n,o){const{x:a,y:s,startAngle:c,pixelMargin:l,innerRadius:u}=t,d=Math.max(t.outerRadius+r+i-l,0),f=u>0?u+r+i+l:0;let h=0;const g=n-c;if(r){const W=u>0?u-r:0,U=d>0?d-r:0,Q=(W+U)/2,Oe=Q!==0?g*Q/(Q+r):g;h=(g-Oe)/2}const m=Math.max(.001,g*d-i/J)/d,p=(g-m)/2,b=c+p+h,_=n-p-h,{outerStart:k,outerEnd:x,innerStart:y,innerEnd:z}=mk(t,f,d,_-b),T=d-k,I=d-x,E=b+k/T,R=_-x/I,A=f+y,F=f+z,ie=b+y/A,se=_-z/F;if(e.beginPath(),o){const W=(E+R)/2;if(e.arc(a,s,d,E,W),e.arc(a,s,d,W,R),x>0){const ce=Dt(I,R,a,s);e.arc(ce.x,ce.y,x,R,_+oe)}const U=Dt(F,_,a,s);if(e.lineTo(U.x,U.y),z>0){const ce=Dt(F,se,a,s);e.arc(ce.x,ce.y,z,_+oe,se+Math.PI)}const Q=(_-z/f+(b+y/f))/2;if(e.arc(a,s,f,_-z/f,Q,!0),e.arc(a,s,f,Q,b+y/f,!0),y>0){const ce=Dt(A,ie,a,s);e.arc(ce.x,ce.y,y,ie+Math.PI,b-oe)}const Oe=Dt(T,b,a,s);if(e.lineTo(Oe.x,Oe.y),k>0){const ce=Dt(T,E,a,s);e.arc(ce.x,ce.y,k,b-oe,E)}}else{e.moveTo(a,s);const W=Math.cos(E)*d+a,U=Math.sin(E)*d+s;e.lineTo(W,U);const Q=Math.cos(R)*d+a,Oe=Math.sin(R)*d+s;e.lineTo(Q,Oe)}e.closePath()}function gk(e,t,i,r,n){const{fullCircles:o,startAngle:a,circumference:s}=t;let c=t.endAngle;if(o){Ui(e,t,i,r,c,n);for(let l=0;l<o;++l)e.fill();isNaN(s)||(c=a+(s%ee||ee))}return Ui(e,t,i,r,c,n),e.fill(),c}function pk(e,t,i,r,n){const{fullCircles:o,startAngle:a,circumference:s,options:c}=t,{borderWidth:l,borderJoinStyle:u,borderDash:d,borderDashOffset:f,borderRadius:h}=c,g=c.borderAlign==="inner";if(!l)return;e.setLineDash(d||[]),e.lineDashOffset=f,g?(e.lineWidth=l*2,e.lineJoin=u||"round"):(e.lineWidth=l,e.lineJoin=u||"bevel");let m=t.endAngle;if(o){Ui(e,t,i,r,m,n);for(let p=0;p<o;++p)e.stroke();isNaN(s)||(m=a+(s%ee||ee))}g&&fk(e,t,m),c.selfJoin&&m-a>=J&&h===0&&u!=="miter"&&dk(e,t,m),o||(Ui(e,t,i,r,m,n),e.stroke())}class vk extends wt{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>t!=="borderDash"};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,i,r){const n=this.getProps(["x","y"],r),{angle:o,distance:a}=vg(n,{x:t,y:i}),{startAngle:s,endAngle:c,innerRadius:l,outerRadius:u,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],r),f=(this.options.spacing+this.options.borderWidth)/2,h=Z(d,c-s),g=In(o,s,c)&&s!==c,m=h>=ee||g,p=gt(a,l+f,u+f);return m&&p}getCenterPoint(t){const{x:i,y:r,startAngle:n,endAngle:o,innerRadius:a,outerRadius:s}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:c,spacing:l}=this.options,u=(n+o)/2,d=(a+s+l+c)/2;return{x:i+Math.cos(u)*d,y:r+Math.sin(u)*d}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:i,circumference:r}=this,n=(i.offset||0)/4,o=(i.spacing||0)/2,a=i.circular;if(this.pixelMargin=i.borderAlign==="inner"?.33:0,this.fullCircles=r>ee?Math.floor(r/ee):0,r===0||this.innerRadius<0||this.outerRadius<0)return;t.save();const s=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(s)*n,Math.sin(s)*n);const c=1-Math.sin(Math.min(J,r||0)),l=n*c;t.fillStyle=i.backgroundColor,t.strokeStyle=i.borderColor,gk(t,this,l,o,a),pk(t,this,l,o,a),t.restore()}}function Hg(e,t,i=t){e.lineCap=Z(i.borderCapStyle,t.borderCapStyle),e.setLineDash(Z(i.borderDash,t.borderDash)),e.lineDashOffset=Z(i.borderDashOffset,t.borderDashOffset),e.lineJoin=Z(i.borderJoinStyle,t.borderJoinStyle),e.lineWidth=Z(i.borderWidth,t.borderWidth),e.strokeStyle=Z(i.borderColor,t.borderColor)}function bk(e,t,i){e.lineTo(i.x,i.y)}function yk(e){return e.stepped?J_:e.tension||e.cubicInterpolationMode==="monotone"?q_:bk}function Jg(e,t,i={}){const r=e.length,{start:n=0,end:o=r-1}=i,{start:a,end:s}=t,c=Math.max(n,a),l=Math.min(o,s),u=n<a&&o<a||n>s&&o>s;return{count:r,start:c,loop:t.loop,ilen:l<c&&!u?r+l-c:l-c}}function _k(e,t,i,r){const{points:n,options:o}=t,{count:a,start:s,loop:c,ilen:l}=Jg(n,i,r),u=yk(o);let{move:d=!0,reverse:f}=r||{},h,g,m;for(h=0;h<=l;++h)g=n[(s+(f?l-h:h))%a],!g.skip&&(d?(e.moveTo(g.x,g.y),d=!1):u(e,m,g,f,o.stepped),m=g);return c&&(g=n[(s+(f?l:0))%a],u(e,m,g,f,o.stepped)),!!c}function $k(e,t,i,r){const n=t.points,{count:o,start:a,ilen:s}=Jg(n,i,r),{move:c=!0,reverse:l}=r||{};let u=0,d=0,f,h,g,m,p,b;const _=x=>(a+(l?s-x:x))%o,k=()=>{m!==p&&(e.lineTo(u,p),e.lineTo(u,m),e.lineTo(u,b))};for(c&&(h=n[_(0)],e.moveTo(h.x,h.y)),f=0;f<=s;++f){if(h=n[_(f)],h.skip)continue;const x=h.x,y=h.y,z=x|0;z===g?(y<m?m=y:y>p&&(p=y),u=(d*u+x)/++d):(k(),e.lineTo(x,y),g=z,d=0,m=p=y),b=y}k()}function fo(e){const t=e.options,i=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!i?$k:_k}function xk(e){return e.stepped?z$:e.tension||e.cubicInterpolationMode==="monotone"?T$:ht}function kk(e,t,i,r){let n=t._path;n||(n=t._path=new Path2D,t.path(n,i,r)&&n.closePath()),Hg(e,t.options),e.stroke(n)}function Sk(e,t,i,r){const{segments:n,options:o}=t,a=fo(t);for(const s of n)Hg(e,o,s.style),e.beginPath(),a(e,t,s,{start:i,end:i+r-1})&&e.closePath(),e.stroke()}const wk=typeof Path2D=="function";function Ik(e,t,i,r){wk&&!t.options.segment?kk(e,t,i,r):Sk(e,t,i,r)}class Er extends wt{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>t!=="borderDash"&&t!=="fill"};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,i){const r=this.options;if((r.tension||r.cubicInterpolationMode==="monotone")&&!r.stepped&&!this._pointsUpdated){const n=r.spanGaps?this._loop:this._fullLoop;y$(this._points,r,t,n,i),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=M$(this,this.options.segment))}first(){const t=this.segments,i=this.points;return t.length&&i[t[0].start]}last(){const t=this.segments,i=this.points,r=t.length;return r&&i[t[r-1].end]}interpolate(t,i){const r=this.options,n=t[i],o=this.points,a=jg(this,{property:i,start:n,end:n});if(!a.length)return;const s=[],c=xk(r);let l,u;for(l=0,u=a.length;l<u;++l){const{start:d,end:f}=a[l],h=o[d],g=o[f];if(h===g){s.push(h);continue}const m=Math.abs((n-h[i])/(g[i]-h[i])),p=c(h,g,m,r.stepped);p[i]=t[i],s.push(p)}return s.length===1?s[0]:s}pathSegment(t,i,r){return fo(this)(t,this,i,r)}path(t,i,r){const n=this.segments,o=fo(this);let a=this._loop;i=i||0,r=r||this.points.length-i;for(const s of n)a&=o(t,this,s,{start:i,end:i+r-1});return!!a}draw(t,i,r,n){const o=this.options||{};(this.points||[]).length&&o.borderWidth&&(t.save(),Ik(t,this,r,n),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function Ac(e,t,i,r){const n=e.options,{[i]:o}=e.getProps([i],r);return Math.abs(t-o)<n.radius+n.hitRadius}class zk extends wt{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,i,r){const n=this.options,{x:o,y:a}=this.getProps(["x","y"],r);return Math.pow(t-o,2)+Math.pow(i-a,2)<Math.pow(n.hitRadius+n.radius,2)}inXRange(t,i){return Ac(this,t,"x",i)}inYRange(t,i){return Ac(this,t,"y",i)}getCenterPoint(t){const{x:i,y:r}=this.getProps(["x","y"],t);return{x:i,y:r}}size(t){t=t||this.options||{};let i=t.radius||0;i=Math.max(i,i&&t.hoverRadius||0);const r=i&&t.borderWidth||0;return(i+r)*2}draw(t,i){const r=this.options;this.skip||r.radius<.1||!zn(this,i,this.size(r)/2)||(t.strokeStyle=r.borderColor,t.lineWidth=r.borderWidth,t.fillStyle=r.backgroundColor,so(t,r,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}function Tk(e,t,i){const r=e.segments,n=e.points,o=t.points,a=[];for(const s of r){let{start:c,end:l}=s;l=jr(c,l,n);const u=ho(i,n[c],n[l],s.loop);if(!t.segments){a.push({source:s,target:u,start:n[c],end:n[l]});continue}const d=jg(t,u);for(const f of d){const h=ho(i,o[f.start],o[f.end],f.loop),g=Eg(s,n,h);for(const m of g)a.push({source:m,target:f,start:{[i]:Nc(u,h,"start",Math.max)},end:{[i]:Nc(u,h,"end",Math.min)}})}}return a}function ho(e,t,i,r){if(r)return;let n=t[e],o=i[e];return e==="angle"&&(n=_e(n),o=_e(o)),{property:e,start:n,end:o}}function Ok(e,t){const{x:i=null,y:r=null}=e||{},n=t.points,o=[];return t.segments.forEach(({start:a,end:s})=>{s=jr(a,s,n);const c=n[a],l=n[s];r!==null?(o.push({x:c.x,y:r}),o.push({x:l.x,y:r})):i!==null&&(o.push({x:i,y:c.y}),o.push({x:i,y:l.y}))}),o}function jr(e,t,i){for(;t>e;t--){const r=i[t];if(!isNaN(r.x)&&!isNaN(r.y))break}return t}function Nc(e,t,i,r){return e&&t?r(e[i],t[i]):e?e[i]:t?t[i]:0}function qg(e,t){let i=[],r=!1;return ae(e)?(r=!0,i=e):i=Ok(e,t),i.length?new Er({points:i,options:{tension:0},_loop:r,_fullLoop:r}):null}function Rc(e){return e&&e.fill!==!1}function Dk(e,t,i){let n=e[t].fill;const o=[t];let a;if(!i)return n;for(;n!==!1&&o.indexOf(n)===-1;){if(!fe(n))return n;if(a=e[n],!a)return!1;if(a.visible)return n;o.push(n),n=a.fill}return!1}function Pk(e,t,i){const r=Ck(e);if(B(r))return isNaN(r.value)?!1:r;let n=parseFloat(r);return fe(n)&&Math.floor(n)===n?Ek(r[0],t,n,i):["origin","start","end","stack","shape"].indexOf(r)>=0&&r}function Ek(e,t,i,r){return(e==="-"||e==="+")&&(i=t+i),i===t||i<0||i>=r?!1:i}function jk(e,t){let i=null;return e==="start"?i=t.bottom:e==="end"?i=t.top:B(e)?i=t.getPixelForValue(e.value):t.getBasePixel&&(i=t.getBasePixel()),i}function Mk(e,t,i){let r;return e==="start"?r=i:e==="end"?r=t.options.reverse?t.min:t.max:B(e)?r=e.value:r=t.getBaseValue(),r}function Ck(e){const t=e.options,i=t.fill;let r=Z(i&&i.target,i);return r===void 0&&(r=!!t.backgroundColor),r===!1||r===null?!1:r===!0?"origin":r}function Uk(e){const{scale:t,index:i,line:r}=e,n=[],o=r.segments,a=r.points,s=Ak(t,i);s.push(qg({x:null,y:t.bottom},r));for(let c=0;c<o.length;c++){const l=o[c];for(let u=l.start;u<=l.end;u++)Nk(n,a[u],s)}return new Er({points:n,options:{}})}function Ak(e,t){const i=[],r=e.getMatchingVisibleMetas("line");for(let n=0;n<r.length;n++){const o=r[n];if(o.index===t)break;o.hidden||i.unshift(o.dataset)}return i}function Nk(e,t,i){const r=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:s,point:c}=Rk(o,t,"x");if(!(!c||a&&s)){if(a)r.unshift(c);else if(e.push(c),!s)break}}e.push(...r)}function Rk(e,t,i){const r=e.interpolate(t,i);if(!r)return{};const n=r[i],o=e.segments,a=e.points;let s=!1,c=!1;for(let l=0;l<o.length;l++){const u=o[l],d=a[u.start][i],f=a[u.end][i];if(gt(n,d,f)){s=n===d,c=n===f;break}}return{first:s,last:c,point:r}}class Kg{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,i,r){const{x:n,y:o,radius:a}=this;return i=i||{start:0,end:ee},t.arc(n,o,a,i.end,i.start,!0),!r.bounds}interpolate(t){const{x:i,y:r,radius:n}=this,o=t.angle;return{x:i+Math.cos(o)*n,y:r+Math.sin(o)*n,angle:o}}}function Lk(e){const{chart:t,fill:i,line:r}=e;if(fe(i))return Fk(t,i);if(i==="stack")return Uk(e);if(i==="shape")return!0;const n=Zk(e);return n instanceof Kg?n:qg(n,r)}function Fk(e,t){const i=e.getDatasetMeta(t);return i&&e.isDatasetVisible(t)?i.dataset:null}function Zk(e){return(e.scale||{}).getPointPositionForValue?Wk(e):Bk(e)}function Bk(e){const{scale:t={},fill:i}=e,r=jk(i,t);if(fe(r)){const n=t.isHorizontal();return{x:n?r:null,y:n?null:r}}return null}function Wk(e){const{scale:t,fill:i}=e,r=t.options,n=t.getLabels().length,o=r.reverse?t.max:t.min,a=Mk(i,t,o),s=[];if(r.grid.circular){const c=t.getPointPositionForValue(0,o);return new Kg({x:c.x,y:c.y,radius:t.getDistanceFromCenterForValue(a)})}for(let c=0;c<n;++c)s.push(t.getPointPositionForValue(c,a));return s}function Vr(e,t,i){const r=Lk(t),{chart:n,index:o,line:a,scale:s,axis:c}=t,l=a.options,u=l.fill,d=l.backgroundColor,{above:f=d,below:h=d}=u||{},g=n.getDatasetMeta(o),m=Mg(n,g);r&&a.points.length&&(Tr(e,i),Vk(e,{line:a,target:r,above:f,below:h,area:i,scale:s,axis:c,clip:m}),Or(e))}function Vk(e,t){const{line:i,target:r,above:n,below:o,area:a,scale:s,clip:c}=t,l=i._loop?"angle":t.axis;e.save();let u=o;o!==n&&(l==="x"?(Lc(e,r,a.top),Hr(e,{line:i,target:r,color:n,scale:s,property:l,clip:c}),e.restore(),e.save(),Lc(e,r,a.bottom)):l==="y"&&(Fc(e,r,a.left),Hr(e,{line:i,target:r,color:o,scale:s,property:l,clip:c}),e.restore(),e.save(),Fc(e,r,a.right),u=n)),Hr(e,{line:i,target:r,color:u,scale:s,property:l,clip:c}),e.restore()}function Lc(e,t,i){const{segments:r,points:n}=t;let o=!0,a=!1;e.beginPath();for(const s of r){const{start:c,end:l}=s,u=n[c],d=n[jr(c,l,n)];o?(e.moveTo(u.x,u.y),o=!1):(e.lineTo(u.x,i),e.lineTo(u.x,u.y)),a=!!t.pathSegment(e,s,{move:a}),a?e.closePath():e.lineTo(d.x,i)}e.lineTo(t.first().x,i),e.closePath(),e.clip()}function Fc(e,t,i){const{segments:r,points:n}=t;let o=!0,a=!1;e.beginPath();for(const s of r){const{start:c,end:l}=s,u=n[c],d=n[jr(c,l,n)];o?(e.moveTo(u.x,u.y),o=!1):(e.lineTo(i,u.y),e.lineTo(u.x,u.y)),a=!!t.pathSegment(e,s,{move:a}),a?e.closePath():e.lineTo(i,d.y)}e.lineTo(i,t.first().y),e.closePath(),e.clip()}function Hr(e,t){const{line:i,target:r,property:n,color:o,scale:a,clip:s}=t,c=Tk(i,r,n);for(const{source:l,target:u,start:d,end:f}of c){const{style:{backgroundColor:h=o}={}}=l,g=r!==!0;e.save(),e.fillStyle=h,Hk(e,a,s,g&&ho(n,d,f)),e.beginPath();const m=!!i.pathSegment(e,l);let p;if(g){m?e.closePath():Zc(e,r,f,n);const b=!!r.pathSegment(e,u,{move:m,reverse:!0});p=m&&b,p||Zc(e,r,d,n)}e.closePath(),e.fill(p?"evenodd":"nonzero"),e.restore()}}function Hk(e,t,i,r){const n=t.chart.chartArea,{property:o,start:a,end:s}=r||{};if(o==="x"||o==="y"){let c,l,u,d;o==="x"?(c=a,l=n.top,u=s,d=n.bottom):(c=n.left,l=a,u=n.right,d=s),e.beginPath(),i&&(c=Math.max(c,i.left),u=Math.min(u,i.right),l=Math.max(l,i.top),d=Math.min(d,i.bottom)),e.rect(c,l,u-c,d-l),e.clip()}}function Zc(e,t,i,r){const n=t.interpolate(i,r);n&&e.lineTo(n.x,n.y)}var Jk={id:"filler",afterDatasetsUpdate(e,t,i){const r=(e.data.datasets||[]).length,n=[];let o,a,s,c;for(a=0;a<r;++a)o=e.getDatasetMeta(a),s=o.dataset,c=null,s&&s.options&&s instanceof Er&&(c={visible:e.isDatasetVisible(a),index:a,fill:Pk(s,a,r),chart:e,axis:o.controller.options.indexAxis,scale:o.vScale,line:s}),o.$filler=c,n.push(c);for(a=0;a<r;++a)c=n[a],!(!c||c.fill===!1)&&(c.fill=Dk(n,a,i.propagate))},beforeDraw(e,t,i){const r=i.drawTime==="beforeDraw",n=e.getSortedVisibleDatasetMetas(),o=e.chartArea;for(let a=n.length-1;a>=0;--a){const s=n[a].$filler;s&&(s.line.updateControlPoints(o,s.axis),r&&s.fill&&Vr(e.ctx,s,o))}},beforeDatasetsDraw(e,t,i){if(i.drawTime!=="beforeDatasetsDraw")return;const r=e.getSortedVisibleDatasetMetas();for(let n=r.length-1;n>=0;--n){const o=r[n].$filler;Rc(o)&&Vr(e.ctx,o,e.chartArea)}},beforeDatasetDraw(e,t,i){const r=t.meta.$filler;!Rc(r)||i.drawTime!=="beforeDatasetDraw"||Vr(e.ctx,r,e.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Bc=(e,t)=>{let{boxHeight:i=t,boxWidth:r=t}=e;return e.usePointStyle&&(i=Math.min(i,t),r=e.pointStyleWidth||Math.min(r,t)),{boxWidth:r,boxHeight:i,itemHeight:Math.max(t,i)}},qk=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index;class Wc extends wt{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,i,r){this.maxWidth=t,this.maxHeight=i,this._margins=r,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let i=G(t.generateLabels,[this.chart],this)||[];t.filter&&(i=i.filter(r=>t.filter(r,this.chart.data))),t.sort&&(i=i.sort((r,n)=>t.sort(r,n,this.chart.data))),this.options.reverse&&i.reverse(),this.legendItems=i}fit(){const{options:t,ctx:i}=this;if(!t.display){this.width=this.height=0;return}const r=t.labels,n=be(r.font),o=n.size,a=this._computeTitleHeight(),{boxWidth:s,itemHeight:c}=Bc(r,o);let l,u;i.font=n.string,this.isHorizontal()?(l=this.maxWidth,u=this._fitRows(a,o,s,c)+10):(u=this.maxHeight,l=this._fitCols(a,n,s,c)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(u,t.maxHeight||this.maxHeight)}_fitRows(t,i,r,n){const{ctx:o,maxWidth:a,options:{labels:{padding:s}}}=this,c=this.legendHitBoxes=[],l=this.lineWidths=[0],u=n+s;let d=t;o.textAlign="left",o.textBaseline="middle";let f=-1,h=-u;return this.legendItems.forEach((g,m)=>{const p=r+i/2+o.measureText(g.text).width;(m===0||l[l.length-1]+p+2*s>a)&&(d+=u,l[l.length-(m>0?0:1)]=0,h+=u,f++),c[m]={left:0,top:h,row:f,width:p,height:n},l[l.length-1]+=p+s}),d}_fitCols(t,i,r,n){const{ctx:o,maxHeight:a,options:{labels:{padding:s}}}=this,c=this.legendHitBoxes=[],l=this.columnSizes=[],u=a-t;let d=s,f=0,h=0,g=0,m=0;return this.legendItems.forEach((p,b)=>{const{itemWidth:_,itemHeight:k}=Kk(r,i,o,p,n);b>0&&h+k+2*s>u&&(d+=f+s,l.push({width:f,height:h}),g+=f+s,m++,f=h=0),c[b]={left:g,top:h,col:m,width:_,height:k},f=Math.max(f,_),h+=k+s}),d+=f,l.push({width:f,height:h}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:i,options:{align:r,labels:{padding:n},rtl:o}}=this,a=jt(o,this.left,this.width);if(this.isHorizontal()){let s=0,c=ye(r,this.left+n,this.right-this.lineWidths[s]);for(const l of i)s!==l.row&&(s=l.row,c=ye(r,this.left+n,this.right-this.lineWidths[s])),l.top+=this.top+t+n,l.left=a.leftForLtr(a.x(c),l.width),c+=l.width+n}else{let s=0,c=ye(r,this.top+t+n,this.bottom-this.columnSizes[s].height);for(const l of i)l.col!==s&&(s=l.col,c=ye(r,this.top+t+n,this.bottom-this.columnSizes[s].height)),l.top=c,l.left+=this.left+n,l.left=a.leftForLtr(a.x(l.left),l.width),c+=l.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;Tr(t,this),this._draw(),Or(t)}}_draw(){const{options:t,columnSizes:i,lineWidths:r,ctx:n}=this,{align:o,labels:a}=t,s=ne.color,c=jt(t.rtl,this.left,this.width),l=be(a.font),{padding:u}=a,d=l.size,f=d/2;let h;this.drawTitle(),n.textAlign=c.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=l.string;const{boxWidth:g,boxHeight:m,itemHeight:p}=Bc(a,d),b=function(z,T,I){if(isNaN(g)||g<=0||isNaN(m)||m<0)return;n.save();const E=Z(I.lineWidth,1);if(n.fillStyle=Z(I.fillStyle,s),n.lineCap=Z(I.lineCap,"butt"),n.lineDashOffset=Z(I.lineDashOffset,0),n.lineJoin=Z(I.lineJoin,"miter"),n.lineWidth=E,n.strokeStyle=Z(I.strokeStyle,s),n.setLineDash(Z(I.lineDash,[])),a.usePointStyle){const R={radius:m*Math.SQRT2/2,pointStyle:I.pointStyle,rotation:I.rotation,borderWidth:E},A=c.xPlus(z,g/2),F=T+f;kg(n,R,A,F,a.pointStyleWidth&&g)}else{const R=T+Math.max((d-m)/2,0),A=c.leftForLtr(z,g),F=pn(I.borderRadius);n.beginPath(),Object.values(F).some(ie=>ie!==0)?co(n,{x:A,y:R,w:g,h:m,radius:F}):n.rect(A,R,g,m),n.fill(),E!==0&&n.stroke()}n.restore()},_=function(z,T,I){ji(n,I.text,z,T+p/2,l,{strikethrough:I.hidden,textAlign:c.textAlign(I.textAlign)})},k=this.isHorizontal(),x=this._computeTitleHeight();k?h={x:ye(o,this.left+u,this.right-r[0]),y:this.top+u+x,line:0}:h={x:this.left+u,y:ye(o,this.top+x+u,this.bottom-i[0].height),line:0},Og(this.ctx,t.textDirection);const y=p+u;this.legendItems.forEach((z,T)=>{n.strokeStyle=z.fontColor,n.fillStyle=z.fontColor;const I=n.measureText(z.text).width,E=c.textAlign(z.textAlign||(z.textAlign=a.textAlign)),R=g+f+I;let A=h.x,F=h.y;c.setWidth(this.width),k?T>0&&A+R+u>this.right&&(F=h.y+=y,h.line++,A=h.x=ye(o,this.left+u,this.right-r[h.line])):T>0&&F+y>this.bottom&&(A=h.x=A+i[h.line].width+u,h.line++,F=h.y=ye(o,this.top+x+u,this.bottom-i[h.line].height));const ie=c.x(A);if(b(ie,F,z),A=M_(E,A+g+f,k?A+R:this.right,t.rtl),_(c.x(A),F,z),k)h.x+=R+u;else if(typeof z.text!="string"){const se=l.lineHeight;h.y+=Xg(z,se)+u}else h.y+=y}),Dg(this.ctx,t.textDirection)}drawTitle(){const t=this.options,i=t.title,r=be(i.font),n=Pe(i.padding);if(!i.display)return;const o=jt(t.rtl,this.left,this.width),a=this.ctx,s=i.position,c=r.size/2,l=n.top+c;let u,d=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),u=this.top+l,d=ye(t.align,d,this.right-f);else{const g=this.columnSizes.reduce((m,p)=>Math.max(m,p.height),0);u=l+ye(t.align,this.top,this.bottom-g-t.labels.padding-this._computeTitleHeight())}const h=ye(s,d,d+f);a.textAlign=o.textAlign($g(s)),a.textBaseline="middle",a.strokeStyle=i.color,a.fillStyle=i.color,a.font=r.string,ji(a,i.text,h,u,r)}_computeTitleHeight(){const t=this.options.title,i=be(t.font),r=Pe(t.padding);return t.display?i.lineHeight+r.height:0}_getLegendItemAt(t,i){let r,n,o;if(gt(t,this.left,this.right)&&gt(i,this.top,this.bottom)){for(o=this.legendHitBoxes,r=0;r<o.length;++r)if(n=o[r],gt(t,n.left,n.left+n.width)&&gt(i,n.top,n.top+n.height))return this.legendItems[r]}return null}handleEvent(t){const i=this.options;if(!Yk(t.type,i))return;const r=this._getLegendItemAt(t.x,t.y);if(t.type==="mousemove"||t.type==="mouseout"){const n=this._hoveredItem,o=qk(n,r);n&&!o&&G(i.onLeave,[t,n,this],this),this._hoveredItem=r,r&&!o&&G(i.onHover,[t,r,this],this)}else r&&G(i.onClick,[t,r,this],this)}}function Kk(e,t,i,r,n){const o=Xk(r,e,t,i),a=Gk(n,r,t.lineHeight);return{itemWidth:o,itemHeight:a}}function Xk(e,t,i,r){let n=e.text;return n&&typeof n!="string"&&(n=n.reduce((o,a)=>o.length>a.length?o:a)),t+i.size/2+r.measureText(n).width}function Gk(e,t,i){let r=e;return typeof t.text!="string"&&(r=Xg(t,i)),r}function Xg(e,t){const i=e.text?e.text.length:0;return t*i}function Yk(e,t){return!!((e==="mousemove"||e==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(e==="click"||e==="mouseup"))}var Qk={id:"legend",_element:Wc,start(e,t,i){const r=e.legend=new Wc({ctx:e.ctx,options:i,chart:e});Ye.configure(e,r,i),Ye.addBox(e,r)},stop(e){Ye.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,i){const r=e.legend;Ye.configure(e,r,i),r.options=i},afterUpdate(e){const t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,i){const r=t.datasetIndex,n=i.chart;n.isDatasetVisible(r)?(n.hide(r),t.hidden=!0):(n.show(r),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){const t=e.data.datasets,{labels:{usePointStyle:i,pointStyle:r,textAlign:n,color:o,useBorderRadius:a,borderRadius:s}}=e.legend.options;return e._getSortedDatasetMetas().map(c=>{const l=c.controller.getStyle(i?0:void 0),u=Pe(l.borderWidth);return{text:t[c.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!c.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(u.width+u.height)/4,strokeStyle:l.borderColor,pointStyle:r||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(s||l.borderRadius),datasetIndex:c.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}};const un={average(e){if(!e.length)return!1;let t,i,r=new Set,n=0,o=0;for(t=0,i=e.length;t<i;++t){const s=e[t].element;if(s&&s.hasValue()){const c=s.tooltipPosition();r.add(c.x),n+=c.y,++o}}return o===0||r.size===0?!1:{x:[...r].reduce((s,c)=>s+c)/r.size,y:n/o}},nearest(e,t){if(!e.length)return!1;let i=t.x,r=t.y,n=Number.POSITIVE_INFINITY,o,a,s;for(o=0,a=e.length;o<a;++o){const c=e[o].element;if(c&&c.hasValue()){const l=c.getCenterPoint(),u=oo(t,l);u<n&&(n=u,s=c)}}if(s){const c=s.tooltipPosition();i=c.x,r=c.y}return{x:i,y:r}}};function je(e,t){return t&&(ae(t)?Array.prototype.push.apply(e,t):e.push(t)),e}function Fe(e){return(typeof e=="string"||e instanceof String)&&e.indexOf(`
41
41
  `)>-1?e.split(`
42
- `):e}function eS(e,t){const{element:i,datasetIndex:r,index:n}=t,o=e.getDatasetMeta(r).controller,{label:a,value:s}=o.getLabelAndValue(n);return{chart:e,label:a,parsed:o.getParsed(n),raw:e.data.datasets[r].data[n],formattedValue:s,dataset:o.getDataset(),dataIndex:n,datasetIndex:r,element:i}}function Vc(e,t){const i=e.chart.ctx,{body:r,footer:n,title:o}=e,{boxWidth:a,boxHeight:s}=t,c=be(t.bodyFont),l=be(t.titleFont),u=be(t.footerFont),d=o.length,f=n.length,h=r.length,g=Pe(t.padding);let m=g.height,p=0,b=r.reduce((x,y)=>x+y.before.length+y.lines.length+y.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,d&&(m+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const x=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;m+=h*x+(b-h)*c.lineHeight+(b-1)*t.bodySpacing}f&&(m+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let _=0;const k=function(x){p=Math.max(p,i.measureText(x).width+_)};return i.save(),i.font=l.string,V(e.title,k),i.font=c.string,V(e.beforeBody.concat(e.afterBody),k),_=t.displayColors?a+2+t.boxPadding:0,V(r,x=>{V(x.before,k),V(x.lines,k),V(x.after,k)}),_=0,i.font=u.string,V(e.footer,k),i.restore(),p+=g.width,{width:p,height:m}}function tS(e,t){const{y:i,height:r}=t;return i<r/2?"top":i>e.height-r/2?"bottom":"center"}function nS(e,t,i,r){const{x:n,width:o}=r,a=i.caretSize+i.caretPadding;if(e==="left"&&n+o+a>t.width||e==="right"&&n-o-a<0)return!0}function iS(e,t,i,r){const{x:n,width:o}=i,{width:a,chartArea:{left:s,right:c}}=e;let l="center";return r==="center"?l=n<=(s+c)/2?"left":"right":n<=o/2?l="left":n>=a-o/2&&(l="right"),nS(l,e,t,i)&&(l="center"),l}function Hc(e,t,i){const r=i.yAlign||t.yAlign||tS(e,i);return{xAlign:i.xAlign||t.xAlign||iS(e,t,i,r),yAlign:r}}function rS(e,t){let{x:i,width:r}=e;return t==="right"?i-=r:t==="center"&&(i-=r/2),i}function oS(e,t,i){let{y:r,height:n}=e;return t==="top"?r+=i:t==="bottom"?r-=n+i:r-=n/2,r}function Jc(e,t,i,r){const{caretSize:n,caretPadding:o,cornerRadius:a}=e,{xAlign:s,yAlign:c}=i,l=n+o,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:h}=pn(a);let g=rS(t,s);const m=oS(t,c,l);return c==="center"?s==="left"?g+=l:s==="right"&&(g-=l):s==="left"?g-=Math.max(u,f)+n:s==="right"&&(g+=Math.max(d,h)+n),{x:me(g,0,r.width-t.width),y:me(m,0,r.height-t.height)}}function vi(e,t,i){const r=Pe(i.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-r.right:e.x+r.left}function qc(e){return je([],Fe(e))}function aS(e,t,i){return St(e,{tooltip:t,tooltipItems:i,type:"tooltip"})}function Kc(e,t){const i=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return i?e.override(i):e}const Gg={beforeTitle:Re,title(e){if(e.length>0){const t=e[0],i=t.chart.data.labels,r=i?i.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(r>0&&t.dataIndex<r)return i[t.dataIndex]}return""},afterTitle:Re,beforeBody:Re,beforeLabel:Re,label(e){if(this&&this.options&&this.options.mode==="dataset")return e.label+": "+e.formattedValue||e.formattedValue;let t=e.dataset.label||"";t&&(t+=": ");const i=e.formattedValue;return X(i)||(t+=i),t},labelColor(e){const i=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{borderColor:i.borderColor,backgroundColor:i.backgroundColor,borderWidth:i.borderWidth,borderDash:i.borderDash,borderDashOffset:i.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(e){const i=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{pointStyle:i.pointStyle,rotation:i.rotation}},afterLabel:Re,afterBody:Re,beforeFooter:Re,footer:Re,afterFooter:Re};function ge(e,t,i,r){const n=e[t].call(i,r);return typeof n>"u"?Gg[t].call(i,r):n}class Xc extends wt{static positioners=un;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const i=this.chart,r=this.options.setContext(this.getContext()),n=r.enabled&&i.options.animation&&r.animations,o=new Cg(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=aS(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,i){const{callbacks:r}=i,n=ge(r,"beforeTitle",this,t),o=ge(r,"title",this,t),a=ge(r,"afterTitle",this,t);let s=[];return s=je(s,Fe(n)),s=je(s,Fe(o)),s=je(s,Fe(a)),s}getBeforeBody(t,i){return qc(ge(i.callbacks,"beforeBody",this,t))}getBody(t,i){const{callbacks:r}=i,n=[];return V(t,o=>{const a={before:[],lines:[],after:[]},s=Kc(r,o);je(a.before,Fe(ge(s,"beforeLabel",this,o))),je(a.lines,ge(s,"label",this,o)),je(a.after,Fe(ge(s,"afterLabel",this,o))),n.push(a)}),n}getAfterBody(t,i){return qc(ge(i.callbacks,"afterBody",this,t))}getFooter(t,i){const{callbacks:r}=i,n=ge(r,"beforeFooter",this,t),o=ge(r,"footer",this,t),a=ge(r,"afterFooter",this,t);let s=[];return s=je(s,Fe(n)),s=je(s,Fe(o)),s=je(s,Fe(a)),s}_createItems(t){const i=this._active,r=this.chart.data,n=[],o=[],a=[];let s=[],c,l;for(c=0,l=i.length;c<l;++c)s.push(eS(this.chart,i[c]));return t.filter&&(s=s.filter((u,d,f)=>t.filter(u,d,f,r))),t.itemSort&&(s=s.sort((u,d)=>t.itemSort(u,d,r))),V(s,u=>{const d=Kc(t.callbacks,u);n.push(ge(d,"labelColor",this,u)),o.push(ge(d,"labelPointStyle",this,u)),a.push(ge(d,"labelTextColor",this,u))}),this.labelColors=n,this.labelPointStyles=o,this.labelTextColors=a,this.dataPoints=s,s}update(t,i){const r=this.options.setContext(this.getContext()),n=this._active;let o,a=[];if(!n.length)this.opacity!==0&&(o={opacity:0});else{const s=un[r.position].call(this,n,this._eventPosition);a=this._createItems(r),this.title=this.getTitle(a,r),this.beforeBody=this.getBeforeBody(a,r),this.body=this.getBody(a,r),this.afterBody=this.getAfterBody(a,r),this.footer=this.getFooter(a,r);const c=this._size=Vc(this,r),l=Object.assign({},s,c),u=Hc(this.chart,r,l),d=Jc(r,l,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,o={opacity:1,x:d.x,y:d.y,width:c.width,height:c.height,caretX:s.x,caretY:s.y}}this._tooltipItems=a,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&r.external&&r.external.call(this,{chart:this.chart,tooltip:this,replay:i})}drawCaret(t,i,r,n){const o=this.getCaretPosition(t,r,n);i.lineTo(o.x1,o.y1),i.lineTo(o.x2,o.y2),i.lineTo(o.x3,o.y3)}getCaretPosition(t,i,r){const{xAlign:n,yAlign:o}=this,{caretSize:a,cornerRadius:s}=r,{topLeft:c,topRight:l,bottomLeft:u,bottomRight:d}=pn(s),{x:f,y:h}=t,{width:g,height:m}=i;let p,b,_,k,x,y;return o==="center"?(x=h+m/2,n==="left"?(p=f,b=p-a,k=x+a,y=x-a):(p=f+g,b=p+a,k=x-a,y=x+a),_=p):(n==="left"?b=f+Math.max(c,u)+a:n==="right"?b=f+g-Math.max(l,d)-a:b=this.caretX,o==="top"?(k=h,x=k-a,p=b-a,_=b+a):(k=h+m,x=k+a,p=b+a,_=b-a),y=k),{x1:p,x2:b,x3:_,y1:k,y2:x,y3:y}}drawTitle(t,i,r){const n=this.title,o=n.length;let a,s,c;if(o){const l=jt(r.rtl,this.x,this.width);for(t.x=vi(this,r.titleAlign,r),i.textAlign=l.textAlign(r.titleAlign),i.textBaseline="middle",a=be(r.titleFont),s=r.titleSpacing,i.fillStyle=r.titleColor,i.font=a.string,c=0;c<o;++c)i.fillText(n[c],l.x(t.x),t.y+a.lineHeight/2),t.y+=a.lineHeight+s,c+1===o&&(t.y+=r.titleMarginBottom-s)}}_drawColorBox(t,i,r,n,o){const a=this.labelColors[r],s=this.labelPointStyles[r],{boxHeight:c,boxWidth:l}=o,u=be(o.bodyFont),d=vi(this,"left",o),f=n.x(d),h=c<u.lineHeight?(u.lineHeight-c)/2:0,g=i.y+h;if(o.usePointStyle){const m={radius:Math.min(l,c)/2,pointStyle:s.pointStyle,rotation:s.rotation,borderWidth:1},p=n.leftForLtr(f,l)+l/2,b=g+c/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,so(t,m,p,b),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,so(t,m,p,b)}else{t.lineWidth=B(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const m=n.leftForLtr(f,l),p=n.leftForLtr(n.xPlus(f,1),l-2),b=pn(a.borderRadius);Object.values(b).some(_=>_!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,co(t,{x:m,y:g,w:l,h:c,radius:b}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),co(t,{x:p,y:g+1,w:l-2,h:c-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,g,l,c),t.strokeRect(m,g,l,c),t.fillStyle=a.backgroundColor,t.fillRect(p,g+1,l-2,c-2))}t.fillStyle=this.labelTextColors[r]}drawBody(t,i,r){const{body:n}=this,{bodySpacing:o,bodyAlign:a,displayColors:s,boxHeight:c,boxWidth:l,boxPadding:u}=r,d=be(r.bodyFont);let f=d.lineHeight,h=0;const g=jt(r.rtl,this.x,this.width),m=function(I){i.fillText(I,g.x(t.x+h),t.y+f/2),t.y+=f+o},p=g.textAlign(a);let b,_,k,x,y,z,T;for(i.textAlign=a,i.textBaseline="middle",i.font=d.string,t.x=vi(this,p,r),i.fillStyle=r.bodyColor,V(this.beforeBody,m),h=s&&p!=="right"?a==="center"?l/2+u:l+2+u:0,x=0,z=n.length;x<z;++x){for(b=n[x],_=this.labelTextColors[x],i.fillStyle=_,V(b.before,m),k=b.lines,s&&k.length&&(this._drawColorBox(i,t,x,g,r),f=Math.max(d.lineHeight,c)),y=0,T=k.length;y<T;++y)m(k[y]),f=d.lineHeight;V(b.after,m)}h=0,f=d.lineHeight,V(this.afterBody,m),t.y-=o}drawFooter(t,i,r){const n=this.footer,o=n.length;let a,s;if(o){const c=jt(r.rtl,this.x,this.width);for(t.x=vi(this,r.footerAlign,r),t.y+=r.footerMarginTop,i.textAlign=c.textAlign(r.footerAlign),i.textBaseline="middle",a=be(r.footerFont),i.fillStyle=r.footerColor,i.font=a.string,s=0;s<o;++s)i.fillText(n[s],c.x(t.x),t.y+a.lineHeight/2),t.y+=a.lineHeight+r.footerSpacing}}drawBackground(t,i,r,n){const{xAlign:o,yAlign:a}=this,{x:s,y:c}=t,{width:l,height:u}=r,{topLeft:d,topRight:f,bottomLeft:h,bottomRight:g}=pn(n.cornerRadius);i.fillStyle=n.backgroundColor,i.strokeStyle=n.borderColor,i.lineWidth=n.borderWidth,i.beginPath(),i.moveTo(s+d,c),a==="top"&&this.drawCaret(t,i,r,n),i.lineTo(s+l-f,c),i.quadraticCurveTo(s+l,c,s+l,c+f),a==="center"&&o==="right"&&this.drawCaret(t,i,r,n),i.lineTo(s+l,c+u-g),i.quadraticCurveTo(s+l,c+u,s+l-g,c+u),a==="bottom"&&this.drawCaret(t,i,r,n),i.lineTo(s+h,c+u),i.quadraticCurveTo(s,c+u,s,c+u-h),a==="center"&&o==="left"&&this.drawCaret(t,i,r,n),i.lineTo(s,c+d),i.quadraticCurveTo(s,c,s+d,c),i.closePath(),i.fill(),n.borderWidth>0&&i.stroke()}_updateAnimationTarget(t){const i=this.chart,r=this.$animations,n=r&&r.x,o=r&&r.y;if(n||o){const a=un[t.position].call(this,this._active,this._eventPosition);if(!a)return;const s=this._size=Vc(this,t),c=Object.assign({},a,this._size),l=Hc(i,t,c),u=Jc(t,c,l,i);(n._to!==u.x||o._to!==u.y)&&(this.xAlign=l.xAlign,this.yAlign=l.yAlign,this.width=s.width,this.height=s.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(t){const i=this.options.setContext(this.getContext());let r=this.opacity;if(!r)return;this._updateAnimationTarget(i);const n={width:this.width,height:this.height},o={x:this.x,y:this.y};r=Math.abs(r)<.001?0:r;const a=Pe(i.padding),s=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;i.enabled&&s&&(t.save(),t.globalAlpha=r,this.drawBackground(o,t,n,i),Og(t,i.textDirection),o.y+=a.top,this.drawTitle(o,t,i),this.drawBody(o,t,i),this.drawFooter(o,t,i),Dg(t,i.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,i){const r=this._active,n=t.map(({datasetIndex:s,index:c})=>{const l=this.chart.getDatasetMeta(s);if(!l)throw new Error("Cannot find a dataset at index "+s);return{datasetIndex:s,element:l.data[c],index:c}}),o=!Oi(r,n),a=this._positionChanged(n,i);(o||a)&&(this._active=n,this._eventPosition=i,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,i,r=!0){if(i&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,o=this._active||[],a=this._getActiveElements(t,o,i,r),s=this._positionChanged(a,t),c=i||!Oi(a,o)||s;return c&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,i))),c}_getActiveElements(t,i,r,n){const o=this.options;if(t.type==="mouseout")return[];if(!n)return i.filter(s=>this.chart.data.datasets[s.datasetIndex]&&this.chart.getDatasetMeta(s.datasetIndex).controller.getParsed(s.index)!==void 0);const a=this.chart.getElementsAtEventForMode(t,o.mode,o,r);return o.reverse&&a.reverse(),a}_positionChanged(t,i){const{caretX:r,caretY:n,options:o}=this,a=un[o.position].call(this,t,i);return a!==!1&&(r!==a.x||n!==a.y)}}var sS={id:"tooltip",_element:Xc,positioners:un,afterInit(e,t,i){i&&(e.tooltip=new Xc({chart:e,options:i}))},beforeUpdate(e,t,i){e.tooltip&&e.tooltip.initialize(i)},reset(e,t,i){e.tooltip&&e.tooltip.initialize(i)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const i={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",i)}},afterEvent(e,t){if(e.tooltip){const i=t.replay;e.tooltip.handleEvent(t.event,i,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Gg},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const cS=(e,t,i,r)=>(typeof t=="string"?(i=e.push(t)-1,r.unshift({index:i,label:t})):isNaN(t)&&(i=null),i);function lS(e,t,i,r){const n=e.indexOf(t);if(n===-1)return cS(e,t,i,r);const o=e.lastIndexOf(t);return n!==o?i:n}const uS=(e,t)=>e===null?null:me(Math.round(e),0,t);function Gc(e){const t=this.getLabels();return e>=0&&e<t.length?t[e]:e}class dS extends Kt{static id="category";static defaults={ticks:{callback:Gc}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const i=this._addedLabels;if(i.length){const r=this.getLabels();for(const{index:n,label:o}of i)r[n]===o&&r.splice(n,1);this._addedLabels=[]}super.init(t)}parse(t,i){if(X(t))return null;const r=this.getLabels();return i=isFinite(i)&&r[i]===t?i:lS(r,t,Z(i,t),this._addedLabels),uS(i,r.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:i}=this.getUserBounds();let{min:r,max:n}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(r=0),i||(n=this.getLabels().length-1)),this.min=r,this.max=n}buildTicks(){const t=this.min,i=this.max,r=this.options.offset,n=[];let o=this.getLabels();o=t===0&&i===o.length-1?o:o.slice(t,i+1),this._valueRange=Math.max(o.length-(r?0:1),1),this._startValue=this.min-(r?.5:0);for(let a=t;a<=i;a++)n.push({value:a});return n}getLabelForValue(t){return Gc.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return typeof t!="number"&&(t=this.parse(t)),t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const i=this.ticks;return t<0||t>i.length-1?null:this.getPixelForValue(i[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function fS(e,t){const i=[],{bounds:n,step:o,min:a,max:s,precision:c,count:l,maxTicks:u,maxDigits:d,includeBounds:f}=e,h=o||1,g=u-1,{min:m,max:p}=t,b=!X(a),_=!X(s),k=!X(l),x=(p-m)/(d+1);let y=Xs((p-m)/g/h)*h,z,T,I,E;if(y<1e-14&&!b&&!_)return[{value:m},{value:p}];E=Math.ceil(p/y)-Math.floor(m/y),E>g&&(y=Xs(E*y/g/h)*h),X(c)||(z=Math.pow(10,c),y=Math.ceil(y*z)/z),n==="ticks"?(T=Math.floor(m/y)*y,I=Math.ceil(p/y)*y):(T=m,I=p),b&&_&&o&&S_((s-a)/o,y/1e3)?(E=Math.round(Math.min((s-a)/y,u)),y=(s-a)/E,T=a,I=s):k?(T=b?a:T,I=_?s:I,E=l-1,y=(I-T)/E):(E=(I-T)/y,hn(E,Math.round(E),y/1e3)?E=Math.round(E):E=Math.ceil(E));const R=Math.max(Gs(y),Gs(T));z=Math.pow(10,X(c)?R:c),T=Math.round(T*z)/z,I=Math.round(I*z)/z;let A=0;for(b&&(f&&T!==a?(i.push({value:a}),T<a&&A++,hn(Math.round((T+A*y)*z)/z,a,Yc(a,x,e))&&A++):T<a&&A++);A<E;++A){const F=Math.round((T+A*y)*z)/z;if(_&&F>s)break;i.push({value:F})}return _&&f&&I!==s?i.length&&hn(i[i.length-1].value,s,Yc(s,x,e))?i[i.length-1].value=s:i.push({value:s}):(!_||I===s)&&i.push({value:I}),i}function Yc(e,t,{horizontal:i,minRotation:r}){const n=Be(r),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*t*(""+e).length;return Math.min(t/o,a)}class hS extends Kt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,i){return X(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:i,maxDefined:r}=this.getUserBounds();let{min:n,max:o}=this;const a=c=>n=i?n:c,s=c=>o=r?o:c;if(t){const c=Zt(n),l=Zt(o);c<0&&l<0?s(0):c>0&&l>0&&a(0)}if(n===o){let c=o===0?1:Math.abs(o*.05);s(o+c),t||a(n-c)}this.min=n,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:i,stepSize:r}=t,n;return r?(n=Math.ceil(this.max/r)-Math.floor(this.min/r)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${r} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),i=i||11),i&&(n=Math.min(i,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,i=t.ticks;let r=this.getTickLimit();r=Math.max(2,r);const n={maxTicks:r,bounds:t.bounds,min:t.min,max:t.max,precision:i.precision,step:i.stepSize,count:i.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:i.minRotation||0,includeBounds:i.includeBounds!==!1},o=this._range||this,a=fS(n,o);return t.bounds==="ticks"&&w_(a,this,"value"),t.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const t=this.ticks;let i=this.min,r=this.max;if(super.configure(),this.options.offset&&t.length){const n=(r-i)/Math.max(t.length-1,1)/2;i-=n,r+=n}this._startValue=i,this._endValue=r,this._valueRange=r-i}getLabelForValue(t){return ds(t,this.chart.options.locale,this.options.ticks.format)}}class mS extends hS{static id="linear";static defaults={ticks:{callback:xg.formatters.numeric}};determineDataLimits(){const{min:t,max:i}=this.getMinMax(!0);this.min=fe(t)?t:0,this.max=fe(i)?i:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),i=t?this.width:this.height,r=Be(this.options.ticks.minRotation),n=(t?Math.sin(r):Math.cos(r))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(i/Math.min(40,o.lineHeight/n))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const Mr={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ve=Object.keys(Mr);function Qc(e,t){return e-t}function el(e,t){if(X(t))return null;const i=e._adapter,{parser:r,round:n,isoWeekday:o}=e._parseOpts;let a=t;return typeof r=="function"&&(a=r(a)),fe(a)||(a=typeof r=="string"?i.parse(a,r):i.parse(a)),a===null?null:(n&&(a=n==="week"&&(wn(o)||o===!0)?i.startOf(a,"isoWeek",o):i.startOf(a,n)),+a)}function tl(e,t,i,r){const n=ve.length;for(let o=ve.indexOf(e);o<n-1;++o){const a=Mr[ve[o]],s=a.steps?a.steps:Number.MAX_SAFE_INTEGER;if(a.common&&Math.ceil((i-t)/(s*a.size))<=r)return ve[o]}return ve[n-1]}function gS(e,t,i,r,n){for(let o=ve.length-1;o>=ve.indexOf(i);o--){const a=ve[o];if(Mr[a].common&&e._adapter.diff(n,r,a)>=t-1)return a}return ve[i?ve.indexOf(i):0]}function pS(e){for(let t=ve.indexOf(e)+1,i=ve.length;t<i;++t)if(Mr[ve[t]].common)return ve[t]}function nl(e,t,i){if(!i)e[t]=!0;else if(i.length){const{lo:r,hi:n}=ls(i,t),o=i[r]>=t?i[r]:i[n];e[o]=!0}}function vS(e,t,i,r){const n=e._adapter,o=+n.startOf(t[0].value,r),a=t[t.length-1].value;let s,c;for(s=o;s<=a;s=+n.add(s,1,r))c=i[s],c>=0&&(t[c].major=!0);return t}function il(e,t,i){const r=[],n={},o=t.length;let a,s;for(a=0;a<o;++a)s=t[a],n[s]=a,r.push({value:s,major:!1});return o===0||!i?r:vS(e,r,n,i)}class rl extends Kt{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,i={}){const r=t.time||(t.time={}),n=this._adapter=new nx._date(t.adapters.date);n.init(i),fn(r.displayFormats,n.formats()),this._parseOpts={parser:r.parser,round:r.round,isoWeekday:r.isoWeekday},super.init(t),this._normalized=i.normalized}parse(t,i){return t===void 0?null:el(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,i=this._adapter,r=t.time.unit||"day";let{min:n,max:o,minDefined:a,maxDefined:s}=this.getUserBounds();function c(l){!a&&!isNaN(l.min)&&(n=Math.min(n,l.min)),!s&&!isNaN(l.max)&&(o=Math.max(o,l.max))}(!a||!s)&&(c(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&c(this.getMinMax(!1))),n=fe(n)&&!isNaN(n)?n:+i.startOf(Date.now(),r),o=fe(o)&&!isNaN(o)?o:+i.endOf(Date.now(),r)+1,this.min=Math.min(n,o-1),this.max=Math.max(n+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;return t.length&&(i=t[0],r=t[t.length-1]),{min:i,max:r}}buildTicks(){const t=this.options,i=t.time,r=t.ticks,n=r.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&n.length&&(this.min=this._userMin||n[0],this.max=this._userMax||n[n.length-1]);const o=this.min,a=this.max,s=D_(n,o,a);return this._unit=i.unit||(r.autoSkip?tl(i.minUnit,this.min,this.max,this._getLabelCapacity(o)):gS(this,s.length,i.minUnit,this.min,this.max)),this._majorUnit=!r.major.enabled||this._unit==="year"?void 0:pS(this._unit),this.initOffsets(n),t.reverse&&s.reverse(),il(this,s,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let i=0,r=0,n,o;this.options.offset&&t.length&&(n=this.getDecimalForValue(t[0]),t.length===1?i=1-n:i=(this.getDecimalForValue(t[1])-n)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?r=o:r=(o-this.getDecimalForValue(t[t.length-2]))/2);const a=t.length<3?.5:.25;i=me(i,0,a),r=me(r,0,a),this._offsets={start:i,end:r,factor:1/(i+1+r)}}_generate(){const t=this._adapter,i=this.min,r=this.max,n=this.options,o=n.time,a=o.unit||tl(o.minUnit,i,r,this._getLabelCapacity(i)),s=Z(n.ticks.stepSize,1),c=a==="week"?o.isoWeekday:!1,l=wn(c)||c===!0,u={};let d=i,f,h;if(l&&(d=+t.startOf(d,"isoWeek",c)),d=+t.startOf(d,l?"day":a),t.diff(r,i,a)>1e5*s)throw new Error(i+" and "+r+" are too far apart with stepSize of "+s+" "+a);const g=n.ticks.source==="data"&&this.getDataTimestamps();for(f=d,h=0;f<r;f=+t.add(f,s,a),h++)nl(u,f,g);return(f===r||n.bounds==="ticks"||h===1)&&nl(u,f,g),Object.keys(u).sort(Qc).map(m=>+m)}getLabelForValue(t){const i=this._adapter,r=this.options.time;return r.tooltipFormat?i.format(t,r.tooltipFormat):i.format(t,r.displayFormats.datetime)}format(t,i){const n=this.options.time.displayFormats,o=this._unit,a=i||n[o];return this._adapter.format(t,a)}_tickFormatFunction(t,i,r,n){const o=this.options,a=o.ticks.callback;if(a)return G(a,[t,i,r],this);const s=o.time.displayFormats,c=this._unit,l=this._majorUnit,u=c&&s[c],d=l&&s[l],f=r[i],h=l&&d&&f&&f.major;return this._adapter.format(t,n||(h?d:u))}generateTickLabels(t){let i,r,n;for(i=0,r=t.length;i<r;++i)n=t[i],n.label=this._tickFormatFunction(n.value,i,t)}getDecimalForValue(t){return t===null?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const i=this._offsets,r=this.getDecimalForValue(t);return this.getPixelForDecimal((i.start+r)*i.factor)}getValueForPixel(t){const i=this._offsets,r=this.getDecimalForPixel(t)/i.factor-i.end;return this.min+r*(this.max-this.min)}_getLabelSize(t){const i=this.options.ticks,r=this.ctx.measureText(t).width,n=Be(this.isHorizontal()?i.maxRotation:i.minRotation),o=Math.cos(n),a=Math.sin(n),s=this._resolveTickFontOptions(0).size;return{w:r*o+s*a,h:r*a+s*o}}_getLabelCapacity(t){const i=this.options.time,r=i.displayFormats,n=r[i.unit]||r.millisecond,o=this._tickFormatFunction(t,0,il(this,[t],this._majorUnit),n),a=this._getLabelSize(o),s=Math.floor(this.isHorizontal()?this.width/a.w:this.height/a.h)-1;return s>0?s:1}getDataTimestamps(){let t=this._cache.data||[],i,r;if(t.length)return t;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(i=0,r=n.length;i<r;++i)t=t.concat(n[i].controller.getAllParsedValues(this));return this._cache.data=this.normalize(t)}getLabelTimestamps(){const t=this._cache.labels||[];let i,r;if(t.length)return t;const n=this.getLabels();for(i=0,r=n.length;i<r;++i)t.push(el(this,n[i]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return E_(t.sort(Qc))}}function bi(e,t,i){let r=0,n=e.length-1,o,a,s,c;i?(t>=e[r].pos&&t<=e[n].pos&&({lo:r,hi:n}=pt(e,"pos",t)),{pos:o,time:s}=e[r],{pos:a,time:c}=e[n]):(t>=e[r].time&&t<=e[n].time&&({lo:r,hi:n}=pt(e,"time",t)),{time:o,pos:s}=e[r],{time:a,pos:c}=e[n]);const l=a-o;return l?s+(c-s)*(t-o)/l:s}class ES extends rl{static id="timeseries";static defaults=rl.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),i=this._table=this.buildLookupTable(t);this._minPos=bi(i,this.min),this._tableRange=bi(i,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:i,max:r}=this,n=[],o=[];let a,s,c,l,u;for(a=0,s=t.length;a<s;++a)l=t[a],l>=i&&l<=r&&n.push(l);if(n.length<2)return[{time:i,pos:0},{time:r,pos:1}];for(a=0,s=n.length;a<s;++a)u=n[a+1],c=n[a-1],l=n[a],Math.round((u+c)/2)!==l&&o.push({time:l,pos:a/(s-1)});return o}_generate(){const t=this.min,i=this.max;let r=super.getDataTimestamps();return(!r.includes(t)||!r.length)&&r.splice(0,0,t),(!r.includes(i)||r.length===1)&&r.push(i),r.sort((n,o)=>n-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const i=this.getDataTimestamps(),r=this.getLabelTimestamps();return i.length&&r.length?t=this.normalize(i.concat(r)):t=i.length?i:r,t=this._cache.all=t,t}getDecimalForValue(t){return(bi(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const i=this._offsets,r=this.getDecimalForPixel(t)/i.factor-i.end;return bi(this._table,r*this._tableRange+this._minPos,!0)}}const Yg=5e3;Pt.register(ex,Er,zk,mS,dS,Jk,sS,Qk,tx,vk);function bS(e){return{gridColor:e?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)",textColor:e?"#94a3b8":"#475569"}}function yS(e){const t=document.body.classList.contains("dark"),i=bS(t),r=document.getElementById("memory-chart");if(r){const s={labels:[],datasets:[{label:"Memory Usage (%)",data:[],backgroundColor:"rgba(16, 185, 129, 0.1)",borderColor:"#10b981",borderWidth:2,fill:!0,tension:.4}]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!1,text:"Time",color:i.textColor}},y:{display:!0,beginAtZero:!0,max:100,grid:{color:i.gridColor},border:{display:!0,color:i.gridColor},ticks:{display:!0,color:i.textColor,stepSize:25,callback:function(u){return String(u)+"%"}},title:{display:!1,text:"Memory %",color:i.textColor}}},layout:{padding:0},plugins:{legend:{display:!1},tooltip:{enabled:!0,position:"nearest",intersect:!1}}},l=new Pt(r,{type:"line",data:s,options:c});e.charts.memory={data:s,options:c,update:()=>l.update()}}const n=document.getElementById("cpu-chart");if(n){const s={labels:[],datasets:[{label:"CPU Usage (%)",data:[],backgroundColor:"rgba(16, 185, 129, 0.1)",borderColor:"#10b981",borderWidth:2,fill:!0,tension:.4}]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!1,text:"Time",color:i.textColor}},y:{display:!0,beginAtZero:!0,max:100,grid:{color:i.gridColor},border:{display:!0,color:i.gridColor},ticks:{display:!0,color:i.textColor,stepSize:25,callback:function(u){return String(u)+"%"}},title:{display:!1,text:"Cpu %",color:i.textColor}}},layout:{padding:0},plugins:{legend:{display:!1},tooltip:{enabled:!0,position:"nearest",intersect:!1}}},l=new Pt(n,{type:"line",data:s,options:c});e.charts.cpu={data:s,options:c,update:()=>l.update()}}const o=document.getElementById("traffic-chart");if(o){const s={labels:[],datasets:[{label:"Requests/s",data:[],borderColor:"#3b82f6",backgroundColor:"rgba(59, 130, 246, 0.1)",fill:!0,tension:.4,yAxisID:"y"},{label:"Avg Response Time (ms)",data:[],borderColor:"#10b981",backgroundColor:"rgba(16, 185, 129, 0.1)",fill:!0,tension:.4,yAxisID:"y1"}]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!0,text:"Time",color:i.textColor}},y:{type:"linear",display:!0,position:"left",grid:{color:i.gridColor},ticks:{color:i.textColor},beginAtZero:!0,title:{display:!0,text:"Requests/s",color:i.textColor}},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1,color:i.gridColor},ticks:{color:"#10b981"},beginAtZero:!0,title:{display:!0,text:"Avg Response Time (ms)",color:"#10b981"}}},plugins:{legend:{labels:{color:i.textColor}}}},l=new Pt(o,{type:"line",data:s,options:c});e.charts.traffic={data:s,options:c,update:()=>l.update()}}const a=document.getElementById("pool-chart");if(a){const s={labels:[],datasets:[]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!0,text:"Time",color:i.textColor}},y:{grid:{color:i.gridColor},ticks:{color:i.textColor},beginAtZero:!0,title:{display:!0,text:"Connections",color:i.textColor}}},plugins:{legend:{labels:{color:i.textColor}}}},l=new Pt(a,{type:"line",data:s,options:c});e.charts.pool={data:s,options:c,update:()=>l.update()}}}function _S(e,t){e.history.labels=[],e.history.requests=[],e.history.avgResponseTimes=[],e.history.p95ResponseTimes=[],e.history.p99ResponseTimes=[],e.history.cpuUsage=[],e.history.memoryUsage=[],e.history.poolUsage={};const i=e.maxHistoryPoints,r=t.slice(-i),n=(e.status.intervalMs??Yg)/1e3;r.forEach(l=>{const u=new Date(l.timestamp).toLocaleTimeString();e.history.labels.push(u),e.history.requests.push(l.requests/n),e.history.avgResponseTimes.push(l.durationAvg),e.history.p95ResponseTimes??=[],e.history.p95ResponseTimes.push(l.durationP95),e.history.p99ResponseTimes??=[],e.history.p99ResponseTimes.push(l.durationP99);const d=e.status.system?.memory.totalMemory??0;e.history.cpuUsage.push(l.system.cpu),e.history.memoryUsage.push(d>0?l.system.rss/d*100:0),l.pools.forEach(f=>{e.history.poolUsage[f.name]??=[],e.history.poolUsage[f.name]?.push(f.connectionsInUse)})});const o=e.charts.traffic;if(o){o.data.labels=e.history.labels;const l=o.data.datasets[0],u=o.data.datasets[1];l&&(l.data=e.history.requests),u&&(u.data=e.history.avgResponseTimes),o.update()}const a=e.charts.pool;a&&(a.data.labels=e.history.labels,Object.entries(e.history.poolUsage).forEach(([l,u],d)=>{let f=a.data.datasets.find(h=>h.label===l);if(f)f.data=u;else{const h=["#10b981","#f59e0b","#3b82f6","#8b5cf6","#ec4899"],g=h[d%h.length]??"#3b82f6";f={label:l,data:u,borderColor:g,backgroundColor:void 0,fill:void 0,tension:.4},a.data.datasets.push(f)}}),a.update());const s=e.charts.memory;s&&(s.data.labels=e.history.labels,s.data.datasets[0]&&(s.data.datasets[0].data=e.history.memoryUsage),s.update());const c=e.charts.cpu;c&&(c.data.labels=e.history.labels,c.data.datasets[0]&&(c.data.datasets[0].data=e.history.cpuUsage),c.update())}function ol(e,t,i,r,n){const o=e.maxHistoryPoints;e.history.labels.push(t),e.history.requests.push(i),e.history.avgResponseTimes.push(r);const a=e.status.system?.memory.totalMemory??0,s=e.status.history?.[e.status.history.length-1];s?(e.history.cpuUsage.push(s.system.cpu),e.history.memoryUsage.push(a>0?s.system.rss/a*100:0)):(e.history.cpuUsage.push(0),e.history.memoryUsage.push(0)),e.history.labels.length>o&&(e.history.labels.shift(),e.history.requests.shift(),e.history.avgResponseTimes.shift(),e.history.cpuUsage.shift(),e.history.memoryUsage.shift());const c=e.charts.traffic;c?.data.datasets[0]&&c.data.datasets[1]&&(c.data.labels=e.history.labels,c.data.datasets[0].data=e.history.requests,c.data.datasets[1].data=e.history.avgResponseTimes,c.update());const l=e.charts.memory;l?.data.datasets[0]&&(l.data.labels=e.history.labels,l.data.datasets[0].data=e.history.memoryUsage,l.update());const u=e.charts.cpu;u?.data.datasets[0]&&(u.data.labels=e.history.labels,u.data.datasets[0].data=e.history.cpuUsage,u.update());const d=e.charts.pool;d&&(d.data.labels=e.history.labels,n.forEach((f,h)=>{const g=f.name,m=e.history;let p=m.poolUsage[g];if(!p){p=[],m.poolUsage[g]=p;const b=["#10b981","#f59e0b","#3b82f6","#8b5cf6","#ec4899"],_=b[h%b.length]??"#3b82f6";_&&d.data.datasets.push({label:g,data:p,borderColor:_,backgroundColor:void 0,fill:void 0,tension:.4})}p.push(f.connectionsInUse),p.length>o&&p.shift()}),d.update())}function _s(e){if(e<1)return $s(e*1e3);const t=Math.floor(e/(3600*24)),i=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),n=Math.floor(e%60),o=[];return t>0&&o.push(`${t}d`),i>0&&o.push(`${i}h`),r>0&&o.push(`${r}m`),(n>0||o.length===0)&&o.push(`${n}s`),o.join(" ")}function $s(e){return e===0?"0 ms":e<1?`${(e*1e3).toFixed(0)} μs`:e<1e3?`${e.toFixed(2)} ms`:_s(e/1e3)}function Qg(e){return e?new Date(e).toLocaleString():"-"}function $S(e,t,i){Object.keys(e).forEach(n=>{const o=e[n],a=t[n],s=i[n];(a===void 0||o<a)&&(t[n]=o),(s===void 0||o>s)&&(i[n]=o)})}function xS(e){return{gridColor:e?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)",textColor:e?"#94a3b8":"#475569"}}function kS(e,t){if(!e.options.scales)return;const i=e.options.scales;i.x&&(i.x.grid&&(i.x.grid.color=t.gridColor),i.x.ticks&&(i.x.ticks.color=t.textColor)),i.y?.grid&&(i.y.grid.color=t.gridColor),i.y?.ticks&&(i.y.ticks.color=t.textColor),i.y1?.grid&&(i.y1.grid.color=t.gridColor),i.y1?.ticks&&(i.y1.ticks.color=t.textColor),i.y?.title&&(i.y.title.color=t.textColor),i.y1?.title&&(i.y1.title.color=t.textColor),e.options.plugins?.legend?.labels&&(e.options.plugins.legend.labels.color=t.textColor),e.update()}function SS(e){const t=localStorage.getItem("theme")??"dark",i=document.getElementById("theme-toggle-btn");i&&(document.body.className=t,i.onclick=()=>{const n=document.body.classList.contains("dark")?"light":"dark";document.body.className=n,localStorage.setItem("theme",n);const o=xS(n==="dark");Object.values(e.charts).forEach(a=>{const s=a;s?.options&&kS(s,o)})})}function wS(e){const t=e.connectionsOpen>0?Math.round(e.connectionsInUse/e.connectionsOpen*100):0,i=t>90?"var(--danger)":t>70?"var(--warning)":"var(--success)",r=e.stats??void 0;return`
42
+ `):e}function eS(e,t){const{element:i,datasetIndex:r,index:n}=t,o=e.getDatasetMeta(r).controller,{label:a,value:s}=o.getLabelAndValue(n);return{chart:e,label:a,parsed:o.getParsed(n),raw:e.data.datasets[r].data[n],formattedValue:s,dataset:o.getDataset(),dataIndex:n,datasetIndex:r,element:i}}function Vc(e,t){const i=e.chart.ctx,{body:r,footer:n,title:o}=e,{boxWidth:a,boxHeight:s}=t,c=be(t.bodyFont),l=be(t.titleFont),u=be(t.footerFont),d=o.length,f=n.length,h=r.length,g=Pe(t.padding);let m=g.height,p=0,b=r.reduce((x,y)=>x+y.before.length+y.lines.length+y.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,d&&(m+=d*l.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const x=t.displayColors?Math.max(s,c.lineHeight):c.lineHeight;m+=h*x+(b-h)*c.lineHeight+(b-1)*t.bodySpacing}f&&(m+=t.footerMarginTop+f*u.lineHeight+(f-1)*t.footerSpacing);let _=0;const k=function(x){p=Math.max(p,i.measureText(x).width+_)};return i.save(),i.font=l.string,V(e.title,k),i.font=c.string,V(e.beforeBody.concat(e.afterBody),k),_=t.displayColors?a+2+t.boxPadding:0,V(r,x=>{V(x.before,k),V(x.lines,k),V(x.after,k)}),_=0,i.font=u.string,V(e.footer,k),i.restore(),p+=g.width,{width:p,height:m}}function tS(e,t){const{y:i,height:r}=t;return i<r/2?"top":i>e.height-r/2?"bottom":"center"}function nS(e,t,i,r){const{x:n,width:o}=r,a=i.caretSize+i.caretPadding;if(e==="left"&&n+o+a>t.width||e==="right"&&n-o-a<0)return!0}function iS(e,t,i,r){const{x:n,width:o}=i,{width:a,chartArea:{left:s,right:c}}=e;let l="center";return r==="center"?l=n<=(s+c)/2?"left":"right":n<=o/2?l="left":n>=a-o/2&&(l="right"),nS(l,e,t,i)&&(l="center"),l}function Hc(e,t,i){const r=i.yAlign||t.yAlign||tS(e,i);return{xAlign:i.xAlign||t.xAlign||iS(e,t,i,r),yAlign:r}}function rS(e,t){let{x:i,width:r}=e;return t==="right"?i-=r:t==="center"&&(i-=r/2),i}function oS(e,t,i){let{y:r,height:n}=e;return t==="top"?r+=i:t==="bottom"?r-=n+i:r-=n/2,r}function Jc(e,t,i,r){const{caretSize:n,caretPadding:o,cornerRadius:a}=e,{xAlign:s,yAlign:c}=i,l=n+o,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:h}=pn(a);let g=rS(t,s);const m=oS(t,c,l);return c==="center"?s==="left"?g+=l:s==="right"&&(g-=l):s==="left"?g-=Math.max(u,f)+n:s==="right"&&(g+=Math.max(d,h)+n),{x:me(g,0,r.width-t.width),y:me(m,0,r.height-t.height)}}function vi(e,t,i){const r=Pe(i.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-r.right:e.x+r.left}function qc(e){return je([],Fe(e))}function aS(e,t,i){return St(e,{tooltip:t,tooltipItems:i,type:"tooltip"})}function Kc(e,t){const i=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return i?e.override(i):e}const Gg={beforeTitle:Re,title(e){if(e.length>0){const t=e[0],i=t.chart.data.labels,r=i?i.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(r>0&&t.dataIndex<r)return i[t.dataIndex]}return""},afterTitle:Re,beforeBody:Re,beforeLabel:Re,label(e){if(this&&this.options&&this.options.mode==="dataset")return e.label+": "+e.formattedValue||e.formattedValue;let t=e.dataset.label||"";t&&(t+=": ");const i=e.formattedValue;return X(i)||(t+=i),t},labelColor(e){const i=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{borderColor:i.borderColor,backgroundColor:i.backgroundColor,borderWidth:i.borderWidth,borderDash:i.borderDash,borderDashOffset:i.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(e){const i=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{pointStyle:i.pointStyle,rotation:i.rotation}},afterLabel:Re,afterBody:Re,beforeFooter:Re,footer:Re,afterFooter:Re};function ge(e,t,i,r){const n=e[t].call(i,r);return typeof n>"u"?Gg[t].call(i,r):n}class Xc extends wt{static positioners=un;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const i=this.chart,r=this.options.setContext(this.getContext()),n=r.enabled&&i.options.animation&&r.animations,o=new Cg(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=aS(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,i){const{callbacks:r}=i,n=ge(r,"beforeTitle",this,t),o=ge(r,"title",this,t),a=ge(r,"afterTitle",this,t);let s=[];return s=je(s,Fe(n)),s=je(s,Fe(o)),s=je(s,Fe(a)),s}getBeforeBody(t,i){return qc(ge(i.callbacks,"beforeBody",this,t))}getBody(t,i){const{callbacks:r}=i,n=[];return V(t,o=>{const a={before:[],lines:[],after:[]},s=Kc(r,o);je(a.before,Fe(ge(s,"beforeLabel",this,o))),je(a.lines,ge(s,"label",this,o)),je(a.after,Fe(ge(s,"afterLabel",this,o))),n.push(a)}),n}getAfterBody(t,i){return qc(ge(i.callbacks,"afterBody",this,t))}getFooter(t,i){const{callbacks:r}=i,n=ge(r,"beforeFooter",this,t),o=ge(r,"footer",this,t),a=ge(r,"afterFooter",this,t);let s=[];return s=je(s,Fe(n)),s=je(s,Fe(o)),s=je(s,Fe(a)),s}_createItems(t){const i=this._active,r=this.chart.data,n=[],o=[],a=[];let s=[],c,l;for(c=0,l=i.length;c<l;++c)s.push(eS(this.chart,i[c]));return t.filter&&(s=s.filter((u,d,f)=>t.filter(u,d,f,r))),t.itemSort&&(s=s.sort((u,d)=>t.itemSort(u,d,r))),V(s,u=>{const d=Kc(t.callbacks,u);n.push(ge(d,"labelColor",this,u)),o.push(ge(d,"labelPointStyle",this,u)),a.push(ge(d,"labelTextColor",this,u))}),this.labelColors=n,this.labelPointStyles=o,this.labelTextColors=a,this.dataPoints=s,s}update(t,i){const r=this.options.setContext(this.getContext()),n=this._active;let o,a=[];if(!n.length)this.opacity!==0&&(o={opacity:0});else{const s=un[r.position].call(this,n,this._eventPosition);a=this._createItems(r),this.title=this.getTitle(a,r),this.beforeBody=this.getBeforeBody(a,r),this.body=this.getBody(a,r),this.afterBody=this.getAfterBody(a,r),this.footer=this.getFooter(a,r);const c=this._size=Vc(this,r),l=Object.assign({},s,c),u=Hc(this.chart,r,l),d=Jc(r,l,u,this.chart);this.xAlign=u.xAlign,this.yAlign=u.yAlign,o={opacity:1,x:d.x,y:d.y,width:c.width,height:c.height,caretX:s.x,caretY:s.y}}this._tooltipItems=a,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&r.external&&r.external.call(this,{chart:this.chart,tooltip:this,replay:i})}drawCaret(t,i,r,n){const o=this.getCaretPosition(t,r,n);i.lineTo(o.x1,o.y1),i.lineTo(o.x2,o.y2),i.lineTo(o.x3,o.y3)}getCaretPosition(t,i,r){const{xAlign:n,yAlign:o}=this,{caretSize:a,cornerRadius:s}=r,{topLeft:c,topRight:l,bottomLeft:u,bottomRight:d}=pn(s),{x:f,y:h}=t,{width:g,height:m}=i;let p,b,_,k,x,y;return o==="center"?(x=h+m/2,n==="left"?(p=f,b=p-a,k=x+a,y=x-a):(p=f+g,b=p+a,k=x-a,y=x+a),_=p):(n==="left"?b=f+Math.max(c,u)+a:n==="right"?b=f+g-Math.max(l,d)-a:b=this.caretX,o==="top"?(k=h,x=k-a,p=b-a,_=b+a):(k=h+m,x=k+a,p=b+a,_=b-a),y=k),{x1:p,x2:b,x3:_,y1:k,y2:x,y3:y}}drawTitle(t,i,r){const n=this.title,o=n.length;let a,s,c;if(o){const l=jt(r.rtl,this.x,this.width);for(t.x=vi(this,r.titleAlign,r),i.textAlign=l.textAlign(r.titleAlign),i.textBaseline="middle",a=be(r.titleFont),s=r.titleSpacing,i.fillStyle=r.titleColor,i.font=a.string,c=0;c<o;++c)i.fillText(n[c],l.x(t.x),t.y+a.lineHeight/2),t.y+=a.lineHeight+s,c+1===o&&(t.y+=r.titleMarginBottom-s)}}_drawColorBox(t,i,r,n,o){const a=this.labelColors[r],s=this.labelPointStyles[r],{boxHeight:c,boxWidth:l}=o,u=be(o.bodyFont),d=vi(this,"left",o),f=n.x(d),h=c<u.lineHeight?(u.lineHeight-c)/2:0,g=i.y+h;if(o.usePointStyle){const m={radius:Math.min(l,c)/2,pointStyle:s.pointStyle,rotation:s.rotation,borderWidth:1},p=n.leftForLtr(f,l)+l/2,b=g+c/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,so(t,m,p,b),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,so(t,m,p,b)}else{t.lineWidth=B(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const m=n.leftForLtr(f,l),p=n.leftForLtr(n.xPlus(f,1),l-2),b=pn(a.borderRadius);Object.values(b).some(_=>_!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,co(t,{x:m,y:g,w:l,h:c,radius:b}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),co(t,{x:p,y:g+1,w:l-2,h:c-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,g,l,c),t.strokeRect(m,g,l,c),t.fillStyle=a.backgroundColor,t.fillRect(p,g+1,l-2,c-2))}t.fillStyle=this.labelTextColors[r]}drawBody(t,i,r){const{body:n}=this,{bodySpacing:o,bodyAlign:a,displayColors:s,boxHeight:c,boxWidth:l,boxPadding:u}=r,d=be(r.bodyFont);let f=d.lineHeight,h=0;const g=jt(r.rtl,this.x,this.width),m=function(I){i.fillText(I,g.x(t.x+h),t.y+f/2),t.y+=f+o},p=g.textAlign(a);let b,_,k,x,y,z,T;for(i.textAlign=a,i.textBaseline="middle",i.font=d.string,t.x=vi(this,p,r),i.fillStyle=r.bodyColor,V(this.beforeBody,m),h=s&&p!=="right"?a==="center"?l/2+u:l+2+u:0,x=0,z=n.length;x<z;++x){for(b=n[x],_=this.labelTextColors[x],i.fillStyle=_,V(b.before,m),k=b.lines,s&&k.length&&(this._drawColorBox(i,t,x,g,r),f=Math.max(d.lineHeight,c)),y=0,T=k.length;y<T;++y)m(k[y]),f=d.lineHeight;V(b.after,m)}h=0,f=d.lineHeight,V(this.afterBody,m),t.y-=o}drawFooter(t,i,r){const n=this.footer,o=n.length;let a,s;if(o){const c=jt(r.rtl,this.x,this.width);for(t.x=vi(this,r.footerAlign,r),t.y+=r.footerMarginTop,i.textAlign=c.textAlign(r.footerAlign),i.textBaseline="middle",a=be(r.footerFont),i.fillStyle=r.footerColor,i.font=a.string,s=0;s<o;++s)i.fillText(n[s],c.x(t.x),t.y+a.lineHeight/2),t.y+=a.lineHeight+r.footerSpacing}}drawBackground(t,i,r,n){const{xAlign:o,yAlign:a}=this,{x:s,y:c}=t,{width:l,height:u}=r,{topLeft:d,topRight:f,bottomLeft:h,bottomRight:g}=pn(n.cornerRadius);i.fillStyle=n.backgroundColor,i.strokeStyle=n.borderColor,i.lineWidth=n.borderWidth,i.beginPath(),i.moveTo(s+d,c),a==="top"&&this.drawCaret(t,i,r,n),i.lineTo(s+l-f,c),i.quadraticCurveTo(s+l,c,s+l,c+f),a==="center"&&o==="right"&&this.drawCaret(t,i,r,n),i.lineTo(s+l,c+u-g),i.quadraticCurveTo(s+l,c+u,s+l-g,c+u),a==="bottom"&&this.drawCaret(t,i,r,n),i.lineTo(s+h,c+u),i.quadraticCurveTo(s,c+u,s,c+u-h),a==="center"&&o==="left"&&this.drawCaret(t,i,r,n),i.lineTo(s,c+d),i.quadraticCurveTo(s,c,s+d,c),i.closePath(),i.fill(),n.borderWidth>0&&i.stroke()}_updateAnimationTarget(t){const i=this.chart,r=this.$animations,n=r&&r.x,o=r&&r.y;if(n||o){const a=un[t.position].call(this,this._active,this._eventPosition);if(!a)return;const s=this._size=Vc(this,t),c=Object.assign({},a,this._size),l=Hc(i,t,c),u=Jc(t,c,l,i);(n._to!==u.x||o._to!==u.y)&&(this.xAlign=l.xAlign,this.yAlign=l.yAlign,this.width=s.width,this.height=s.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,u))}}_willRender(){return!!this.opacity}draw(t){const i=this.options.setContext(this.getContext());let r=this.opacity;if(!r)return;this._updateAnimationTarget(i);const n={width:this.width,height:this.height},o={x:this.x,y:this.y};r=Math.abs(r)<.001?0:r;const a=Pe(i.padding),s=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;i.enabled&&s&&(t.save(),t.globalAlpha=r,this.drawBackground(o,t,n,i),Og(t,i.textDirection),o.y+=a.top,this.drawTitle(o,t,i),this.drawBody(o,t,i),this.drawFooter(o,t,i),Dg(t,i.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,i){const r=this._active,n=t.map(({datasetIndex:s,index:c})=>{const l=this.chart.getDatasetMeta(s);if(!l)throw new Error("Cannot find a dataset at index "+s);return{datasetIndex:s,element:l.data[c],index:c}}),o=!Oi(r,n),a=this._positionChanged(n,i);(o||a)&&(this._active=n,this._eventPosition=i,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,i,r=!0){if(i&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,o=this._active||[],a=this._getActiveElements(t,o,i,r),s=this._positionChanged(a,t),c=i||!Oi(a,o)||s;return c&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,i))),c}_getActiveElements(t,i,r,n){const o=this.options;if(t.type==="mouseout")return[];if(!n)return i.filter(s=>this.chart.data.datasets[s.datasetIndex]&&this.chart.getDatasetMeta(s.datasetIndex).controller.getParsed(s.index)!==void 0);const a=this.chart.getElementsAtEventForMode(t,o.mode,o,r);return o.reverse&&a.reverse(),a}_positionChanged(t,i){const{caretX:r,caretY:n,options:o}=this,a=un[o.position].call(this,t,i);return a!==!1&&(r!==a.x||n!==a.y)}}var sS={id:"tooltip",_element:Xc,positioners:un,afterInit(e,t,i){i&&(e.tooltip=new Xc({chart:e,options:i}))},beforeUpdate(e,t,i){e.tooltip&&e.tooltip.initialize(i)},reset(e,t,i){e.tooltip&&e.tooltip.initialize(i)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const i={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",i)}},afterEvent(e,t){if(e.tooltip){const i=t.replay;e.tooltip.handleEvent(t.event,i,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Gg},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const cS=(e,t,i,r)=>(typeof t=="string"?(i=e.push(t)-1,r.unshift({index:i,label:t})):isNaN(t)&&(i=null),i);function lS(e,t,i,r){const n=e.indexOf(t);if(n===-1)return cS(e,t,i,r);const o=e.lastIndexOf(t);return n!==o?i:n}const uS=(e,t)=>e===null?null:me(Math.round(e),0,t);function Gc(e){const t=this.getLabels();return e>=0&&e<t.length?t[e]:e}class dS extends Kt{static id="category";static defaults={ticks:{callback:Gc}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const i=this._addedLabels;if(i.length){const r=this.getLabels();for(const{index:n,label:o}of i)r[n]===o&&r.splice(n,1);this._addedLabels=[]}super.init(t)}parse(t,i){if(X(t))return null;const r=this.getLabels();return i=isFinite(i)&&r[i]===t?i:lS(r,t,Z(i,t),this._addedLabels),uS(i,r.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:i}=this.getUserBounds();let{min:r,max:n}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(r=0),i||(n=this.getLabels().length-1)),this.min=r,this.max=n}buildTicks(){const t=this.min,i=this.max,r=this.options.offset,n=[];let o=this.getLabels();o=t===0&&i===o.length-1?o:o.slice(t,i+1),this._valueRange=Math.max(o.length-(r?0:1),1),this._startValue=this.min-(r?.5:0);for(let a=t;a<=i;a++)n.push({value:a});return n}getLabelForValue(t){return Gc.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return typeof t!="number"&&(t=this.parse(t)),t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const i=this.ticks;return t<0||t>i.length-1?null:this.getPixelForValue(i[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function fS(e,t){const i=[],{bounds:n,step:o,min:a,max:s,precision:c,count:l,maxTicks:u,maxDigits:d,includeBounds:f}=e,h=o||1,g=u-1,{min:m,max:p}=t,b=!X(a),_=!X(s),k=!X(l),x=(p-m)/(d+1);let y=Xs((p-m)/g/h)*h,z,T,I,E;if(y<1e-14&&!b&&!_)return[{value:m},{value:p}];E=Math.ceil(p/y)-Math.floor(m/y),E>g&&(y=Xs(E*y/g/h)*h),X(c)||(z=Math.pow(10,c),y=Math.ceil(y*z)/z),n==="ticks"?(T=Math.floor(m/y)*y,I=Math.ceil(p/y)*y):(T=m,I=p),b&&_&&o&&S_((s-a)/o,y/1e3)?(E=Math.round(Math.min((s-a)/y,u)),y=(s-a)/E,T=a,I=s):k?(T=b?a:T,I=_?s:I,E=l-1,y=(I-T)/E):(E=(I-T)/y,hn(E,Math.round(E),y/1e3)?E=Math.round(E):E=Math.ceil(E));const R=Math.max(Gs(y),Gs(T));z=Math.pow(10,X(c)?R:c),T=Math.round(T*z)/z,I=Math.round(I*z)/z;let A=0;for(b&&(f&&T!==a?(i.push({value:a}),T<a&&A++,hn(Math.round((T+A*y)*z)/z,a,Yc(a,x,e))&&A++):T<a&&A++);A<E;++A){const F=Math.round((T+A*y)*z)/z;if(_&&F>s)break;i.push({value:F})}return _&&f&&I!==s?i.length&&hn(i[i.length-1].value,s,Yc(s,x,e))?i[i.length-1].value=s:i.push({value:s}):(!_||I===s)&&i.push({value:I}),i}function Yc(e,t,{horizontal:i,minRotation:r}){const n=Be(r),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*t*(""+e).length;return Math.min(t/o,a)}class hS extends Kt{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,i){return X(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:i,maxDefined:r}=this.getUserBounds();let{min:n,max:o}=this;const a=c=>n=i?n:c,s=c=>o=r?o:c;if(t){const c=Zt(n),l=Zt(o);c<0&&l<0?s(0):c>0&&l>0&&a(0)}if(n===o){let c=o===0?1:Math.abs(o*.05);s(o+c),t||a(n-c)}this.min=n,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:i,stepSize:r}=t,n;return r?(n=Math.ceil(this.max/r)-Math.floor(this.min/r)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${r} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),i=i||11),i&&(n=Math.min(i,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,i=t.ticks;let r=this.getTickLimit();r=Math.max(2,r);const n={maxTicks:r,bounds:t.bounds,min:t.min,max:t.max,precision:i.precision,step:i.stepSize,count:i.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:i.minRotation||0,includeBounds:i.includeBounds!==!1},o=this._range||this,a=fS(n,o);return t.bounds==="ticks"&&w_(a,this,"value"),t.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const t=this.ticks;let i=this.min,r=this.max;if(super.configure(),this.options.offset&&t.length){const n=(r-i)/Math.max(t.length-1,1)/2;i-=n,r+=n}this._startValue=i,this._endValue=r,this._valueRange=r-i}getLabelForValue(t){return ds(t,this.chart.options.locale,this.options.ticks.format)}}class mS extends hS{static id="linear";static defaults={ticks:{callback:xg.formatters.numeric}};determineDataLimits(){const{min:t,max:i}=this.getMinMax(!0);this.min=fe(t)?t:0,this.max=fe(i)?i:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),i=t?this.width:this.height,r=Be(this.options.ticks.minRotation),n=(t?Math.sin(r):Math.cos(r))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(i/Math.min(40,o.lineHeight/n))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const Mr={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ve=Object.keys(Mr);function Qc(e,t){return e-t}function el(e,t){if(X(t))return null;const i=e._adapter,{parser:r,round:n,isoWeekday:o}=e._parseOpts;let a=t;return typeof r=="function"&&(a=r(a)),fe(a)||(a=typeof r=="string"?i.parse(a,r):i.parse(a)),a===null?null:(n&&(a=n==="week"&&(wn(o)||o===!0)?i.startOf(a,"isoWeek",o):i.startOf(a,n)),+a)}function tl(e,t,i,r){const n=ve.length;for(let o=ve.indexOf(e);o<n-1;++o){const a=Mr[ve[o]],s=a.steps?a.steps:Number.MAX_SAFE_INTEGER;if(a.common&&Math.ceil((i-t)/(s*a.size))<=r)return ve[o]}return ve[n-1]}function gS(e,t,i,r,n){for(let o=ve.length-1;o>=ve.indexOf(i);o--){const a=ve[o];if(Mr[a].common&&e._adapter.diff(n,r,a)>=t-1)return a}return ve[i?ve.indexOf(i):0]}function pS(e){for(let t=ve.indexOf(e)+1,i=ve.length;t<i;++t)if(Mr[ve[t]].common)return ve[t]}function nl(e,t,i){if(!i)e[t]=!0;else if(i.length){const{lo:r,hi:n}=ls(i,t),o=i[r]>=t?i[r]:i[n];e[o]=!0}}function vS(e,t,i,r){const n=e._adapter,o=+n.startOf(t[0].value,r),a=t[t.length-1].value;let s,c;for(s=o;s<=a;s=+n.add(s,1,r))c=i[s],c>=0&&(t[c].major=!0);return t}function il(e,t,i){const r=[],n={},o=t.length;let a,s;for(a=0;a<o;++a)s=t[a],n[s]=a,r.push({value:s,major:!1});return o===0||!i?r:vS(e,r,n,i)}class rl extends Kt{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,i={}){const r=t.time||(t.time={}),n=this._adapter=new nx._date(t.adapters.date);n.init(i),fn(r.displayFormats,n.formats()),this._parseOpts={parser:r.parser,round:r.round,isoWeekday:r.isoWeekday},super.init(t),this._normalized=i.normalized}parse(t,i){return t===void 0?null:el(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,i=this._adapter,r=t.time.unit||"day";let{min:n,max:o,minDefined:a,maxDefined:s}=this.getUserBounds();function c(l){!a&&!isNaN(l.min)&&(n=Math.min(n,l.min)),!s&&!isNaN(l.max)&&(o=Math.max(o,l.max))}(!a||!s)&&(c(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&c(this.getMinMax(!1))),n=fe(n)&&!isNaN(n)?n:+i.startOf(Date.now(),r),o=fe(o)&&!isNaN(o)?o:+i.endOf(Date.now(),r)+1,this.min=Math.min(n,o-1),this.max=Math.max(n+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;return t.length&&(i=t[0],r=t[t.length-1]),{min:i,max:r}}buildTicks(){const t=this.options,i=t.time,r=t.ticks,n=r.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&n.length&&(this.min=this._userMin||n[0],this.max=this._userMax||n[n.length-1]);const o=this.min,a=this.max,s=D_(n,o,a);return this._unit=i.unit||(r.autoSkip?tl(i.minUnit,this.min,this.max,this._getLabelCapacity(o)):gS(this,s.length,i.minUnit,this.min,this.max)),this._majorUnit=!r.major.enabled||this._unit==="year"?void 0:pS(this._unit),this.initOffsets(n),t.reverse&&s.reverse(),il(this,s,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let i=0,r=0,n,o;this.options.offset&&t.length&&(n=this.getDecimalForValue(t[0]),t.length===1?i=1-n:i=(this.getDecimalForValue(t[1])-n)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?r=o:r=(o-this.getDecimalForValue(t[t.length-2]))/2);const a=t.length<3?.5:.25;i=me(i,0,a),r=me(r,0,a),this._offsets={start:i,end:r,factor:1/(i+1+r)}}_generate(){const t=this._adapter,i=this.min,r=this.max,n=this.options,o=n.time,a=o.unit||tl(o.minUnit,i,r,this._getLabelCapacity(i)),s=Z(n.ticks.stepSize,1),c=a==="week"?o.isoWeekday:!1,l=wn(c)||c===!0,u={};let d=i,f,h;if(l&&(d=+t.startOf(d,"isoWeek",c)),d=+t.startOf(d,l?"day":a),t.diff(r,i,a)>1e5*s)throw new Error(i+" and "+r+" are too far apart with stepSize of "+s+" "+a);const g=n.ticks.source==="data"&&this.getDataTimestamps();for(f=d,h=0;f<r;f=+t.add(f,s,a),h++)nl(u,f,g);return(f===r||n.bounds==="ticks"||h===1)&&nl(u,f,g),Object.keys(u).sort(Qc).map(m=>+m)}getLabelForValue(t){const i=this._adapter,r=this.options.time;return r.tooltipFormat?i.format(t,r.tooltipFormat):i.format(t,r.displayFormats.datetime)}format(t,i){const n=this.options.time.displayFormats,o=this._unit,a=i||n[o];return this._adapter.format(t,a)}_tickFormatFunction(t,i,r,n){const o=this.options,a=o.ticks.callback;if(a)return G(a,[t,i,r],this);const s=o.time.displayFormats,c=this._unit,l=this._majorUnit,u=c&&s[c],d=l&&s[l],f=r[i],h=l&&d&&f&&f.major;return this._adapter.format(t,n||(h?d:u))}generateTickLabels(t){let i,r,n;for(i=0,r=t.length;i<r;++i)n=t[i],n.label=this._tickFormatFunction(n.value,i,t)}getDecimalForValue(t){return t===null?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const i=this._offsets,r=this.getDecimalForValue(t);return this.getPixelForDecimal((i.start+r)*i.factor)}getValueForPixel(t){const i=this._offsets,r=this.getDecimalForPixel(t)/i.factor-i.end;return this.min+r*(this.max-this.min)}_getLabelSize(t){const i=this.options.ticks,r=this.ctx.measureText(t).width,n=Be(this.isHorizontal()?i.maxRotation:i.minRotation),o=Math.cos(n),a=Math.sin(n),s=this._resolveTickFontOptions(0).size;return{w:r*o+s*a,h:r*a+s*o}}_getLabelCapacity(t){const i=this.options.time,r=i.displayFormats,n=r[i.unit]||r.millisecond,o=this._tickFormatFunction(t,0,il(this,[t],this._majorUnit),n),a=this._getLabelSize(o),s=Math.floor(this.isHorizontal()?this.width/a.w:this.height/a.h)-1;return s>0?s:1}getDataTimestamps(){let t=this._cache.data||[],i,r;if(t.length)return t;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(i=0,r=n.length;i<r;++i)t=t.concat(n[i].controller.getAllParsedValues(this));return this._cache.data=this.normalize(t)}getLabelTimestamps(){const t=this._cache.labels||[];let i,r;if(t.length)return t;const n=this.getLabels();for(i=0,r=n.length;i<r;++i)t.push(el(this,n[i]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return E_(t.sort(Qc))}}function bi(e,t,i){let r=0,n=e.length-1,o,a,s,c;i?(t>=e[r].pos&&t<=e[n].pos&&({lo:r,hi:n}=pt(e,"pos",t)),{pos:o,time:s}=e[r],{pos:a,time:c}=e[n]):(t>=e[r].time&&t<=e[n].time&&({lo:r,hi:n}=pt(e,"time",t)),{time:o,pos:s}=e[r],{time:a,pos:c}=e[n]);const l=a-o;return l?s+(c-s)*(t-o)/l:s}class ES extends rl{static id="timeseries";static defaults=rl.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),i=this._table=this.buildLookupTable(t);this._minPos=bi(i,this.min),this._tableRange=bi(i,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:i,max:r}=this,n=[],o=[];let a,s,c,l,u;for(a=0,s=t.length;a<s;++a)l=t[a],l>=i&&l<=r&&n.push(l);if(n.length<2)return[{time:i,pos:0},{time:r,pos:1}];for(a=0,s=n.length;a<s;++a)u=n[a+1],c=n[a-1],l=n[a],Math.round((u+c)/2)!==l&&o.push({time:l,pos:a/(s-1)});return o}_generate(){const t=this.min,i=this.max;let r=super.getDataTimestamps();return(!r.includes(t)||!r.length)&&r.splice(0,0,t),(!r.includes(i)||r.length===1)&&r.push(i),r.sort((n,o)=>n-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const i=this.getDataTimestamps(),r=this.getLabelTimestamps();return i.length&&r.length?t=this.normalize(i.concat(r)):t=i.length?i:r,t=this._cache.all=t,t}getDecimalForValue(t){return(bi(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const i=this._offsets,r=this.getDecimalForPixel(t)/i.factor-i.end;return bi(this._table,r*this._tableRange+this._minPos,!0)}}const Yg=5e3;Pt.register(ex,Er,zk,mS,dS,Jk,sS,Qk,tx,vk);function bS(e){return{gridColor:e?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)",textColor:e?"#94a3b8":"#475569"}}function yS(e){const t=document.body.classList.contains("dark"),i=bS(t),r=document.getElementById("memory-chart");if(r){const s={labels:[],datasets:[{label:"Memory Usage (%)",data:[],backgroundColor:"rgba(16, 185, 129, 0.1)",borderColor:"#10b981",borderWidth:2,fill:!0,tension:.4}]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!1,text:"Time",color:i.textColor}},y:{display:!0,beginAtZero:!0,max:100,grid:{color:i.gridColor},border:{display:!0,color:i.gridColor},ticks:{display:!0,color:i.textColor,stepSize:25,callback:function(u){return String(u)+"%"}},title:{display:!1,text:"Memory %",color:i.textColor}}},layout:{padding:0},plugins:{legend:{display:!1},tooltip:{enabled:!0,position:"nearest",intersect:!1}}},l=new Pt(r,{type:"line",data:s,options:c});e.charts.memory={data:s,options:c,update:()=>l.update()}}const n=document.getElementById("cpu-chart");if(n){const s={labels:[],datasets:[{label:"CPU Usage (%)",data:[],backgroundColor:"rgba(16, 185, 129, 0.1)",borderColor:"#10b981",borderWidth:2,fill:!0,tension:.4}]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!1,text:"Time",color:i.textColor}},y:{display:!0,beginAtZero:!0,max:100,grid:{color:i.gridColor},border:{display:!0,color:i.gridColor},ticks:{display:!0,color:i.textColor,stepSize:25,callback:function(u){return String(u)+"%"}},title:{display:!1,text:"Cpu %",color:i.textColor}}},layout:{padding:0},plugins:{legend:{display:!1},tooltip:{enabled:!0,position:"nearest",intersect:!1}}},l=new Pt(n,{type:"line",data:s,options:c});e.charts.cpu={data:s,options:c,update:()=>l.update()}}const o=document.getElementById("traffic-chart");if(o){const s={labels:[],datasets:[{label:"Requests/s",data:[],borderColor:"#3b82f6",backgroundColor:"rgba(59, 130, 246, 0.1)",fill:!0,tension:.4,yAxisID:"y"},{label:"Avg Response Time (ms)",data:[],borderColor:"#10b981",backgroundColor:"rgba(16, 185, 129, 0.1)",fill:!0,tension:.4,yAxisID:"y1"}]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!0,text:"Time",color:i.textColor}},y:{type:"linear",display:!0,position:"left",grid:{color:i.gridColor},ticks:{color:i.textColor},beginAtZero:!0,title:{display:!0,text:"Requests/s",color:i.textColor}},y1:{type:"linear",display:!0,position:"right",grid:{drawOnChartArea:!1,color:i.gridColor},ticks:{color:"#10b981"},beginAtZero:!0,title:{display:!0,text:"Avg Response Time (ms)",color:"#10b981"}}},plugins:{legend:{labels:{color:i.textColor}}}},l=new Pt(o,{type:"line",data:s,options:c});e.charts.traffic={data:s,options:c,update:()=>l.update()}}const a=document.getElementById("pool-chart");if(a){const s={labels:[],datasets:[]},c={responsive:!0,maintainAspectRatio:!1,scales:{x:{grid:{color:i.gridColor},ticks:{display:!1,color:i.textColor,maxRotation:0,autoSkip:!0,maxTicksLimit:10},title:{display:!0,text:"Time",color:i.textColor}},y:{grid:{color:i.gridColor},ticks:{color:i.textColor},beginAtZero:!0,title:{display:!0,text:"Connections",color:i.textColor}}},plugins:{legend:{labels:{color:i.textColor}}}},l=new Pt(a,{type:"line",data:s,options:c});e.charts.pool={data:s,options:c,update:()=>l.update()}}}function _S(e,t){e.history.labels=[],e.history.requests=[],e.history.avgResponseTimes=[],e.history.p95ResponseTimes=[],e.history.p99ResponseTimes=[],e.history.cpuUsage=[],e.history.memoryUsage=[],e.history.poolUsage={};const i=e.maxHistoryPoints,r=t.slice(-i),n=(e.status.intervalMs??Yg)/1e3;r.forEach(l=>{const u=new Date(l.timestamp).toLocaleTimeString();e.history.labels.push(u),e.history.requests.push(l.requests/n),e.history.avgResponseTimes.push(l.durationAvg),e.history.p95ResponseTimes??=[],e.history.p95ResponseTimes.push(l.durationP95),e.history.p99ResponseTimes??=[],e.history.p99ResponseTimes.push(l.durationP99);const d=e.status.system?.memory.totalMemory??0;e.history.cpuUsage.push(l.system.cpu),e.history.memoryUsage.push(d>0?l.system.rss/d*100:0),l.pools.forEach(f=>{e.history.poolUsage[f.name]??=[],e.history.poolUsage[f.name]?.push(f.connectionsInUse)})});const o=e.charts.traffic;if(o){o.data.labels=e.history.labels;const l=o.data.datasets[0],u=o.data.datasets[1];l&&(l.data=e.history.requests),u&&(u.data=e.history.avgResponseTimes),o.update()}const a=e.charts.pool;a&&(a.data.labels=e.history.labels,Object.entries(e.history.poolUsage).forEach(([l,u],d)=>{let f=a.data.datasets.find(h=>h.label===l);if(f)f.data=u;else{const h=["#10b981","#f59e0b","#3b82f6","#8b5cf6","#ec4899"],g=h[d%h.length]??"#3b82f6";f={label:l,data:u,borderColor:g,backgroundColor:void 0,fill:void 0,tension:.4},a.data.datasets.push(f)}}),a.update());const s=e.charts.memory;s&&(s.data.labels=e.history.labels,s.data.datasets[0]&&(s.data.datasets[0].data=e.history.memoryUsage),s.update());const c=e.charts.cpu;c&&(c.data.labels=e.history.labels,c.data.datasets[0]&&(c.data.datasets[0].data=e.history.cpuUsage),c.update())}function ol(e,t,i,r,n){const o=e.maxHistoryPoints;e.history.labels.push(t),e.history.requests.push(i),e.history.avgResponseTimes.push(r);const a=e.status.system?.memory.totalMemory??0,s=e.status.history?.at(-1);s?(e.history.cpuUsage.push(s.system.cpu),e.history.memoryUsage.push(a>0?s.system.rss/a*100:0)):(e.history.cpuUsage.push(0),e.history.memoryUsage.push(0)),e.history.labels.length>o&&(e.history.labels.shift(),e.history.requests.shift(),e.history.avgResponseTimes.shift(),e.history.cpuUsage.shift(),e.history.memoryUsage.shift());const c=e.charts.traffic;c?.data.datasets[0]&&c.data.datasets[1]&&(c.data.labels=e.history.labels,c.data.datasets[0].data=e.history.requests,c.data.datasets[1].data=e.history.avgResponseTimes,c.update());const l=e.charts.memory;l?.data.datasets[0]&&(l.data.labels=e.history.labels,l.data.datasets[0].data=e.history.memoryUsage,l.update());const u=e.charts.cpu;u?.data.datasets[0]&&(u.data.labels=e.history.labels,u.data.datasets[0].data=e.history.cpuUsage,u.update());const d=e.charts.pool;d&&(d.data.labels=e.history.labels,n.forEach((f,h)=>{const g=f.name,m=e.history;let p=m.poolUsage[g];if(!p){p=[],m.poolUsage[g]=p;const b=["#10b981","#f59e0b","#3b82f6","#8b5cf6","#ec4899"],_=b[h%b.length]??"#3b82f6";_&&d.data.datasets.push({label:g,data:p,borderColor:_,backgroundColor:void 0,fill:void 0,tension:.4})}p.push(f.connectionsInUse),p.length>o&&p.shift()}),d.update())}function _s(e){if(e<1)return $s(e*1e3);const t=Math.floor(e/(3600*24)),i=Math.floor(e%(3600*24)/3600),r=Math.floor(e%3600/60),n=Math.floor(e%60),o=[];return t>0&&o.push(`${t}d`),i>0&&o.push(`${i}h`),r>0&&o.push(`${r}m`),(n>0||o.length===0)&&o.push(`${n}s`),o.join(" ")}function $s(e){return e===0?"0 ms":e<1?`${(e*1e3).toFixed(0)} μs`:e<1e3?`${e.toFixed(2)} ms`:_s(e/1e3)}function Qg(e){return e?new Date(e).toLocaleString():"-"}function $S(e,t,i){Object.keys(e).forEach(n=>{const o=e[n],a=t[n],s=i[n];(a===void 0||o<a)&&(t[n]=o),(s===void 0||o>s)&&(i[n]=o)})}function xS(e){return{gridColor:e?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)",textColor:e?"#94a3b8":"#475569"}}function kS(e,t){if(!e.options.scales)return;const i=e.options.scales;i.x&&(i.x.grid&&(i.x.grid.color=t.gridColor),i.x.ticks&&(i.x.ticks.color=t.textColor)),i.y?.grid&&(i.y.grid.color=t.gridColor),i.y?.ticks&&(i.y.ticks.color=t.textColor),i.y1?.grid&&(i.y1.grid.color=t.gridColor),i.y1?.ticks&&(i.y1.ticks.color=t.textColor),i.y?.title&&(i.y.title.color=t.textColor),i.y1?.title&&(i.y1.title.color=t.textColor),e.options.plugins?.legend?.labels&&(e.options.plugins.legend.labels.color=t.textColor),e.update()}function SS(e){const t=localStorage.getItem("theme")??"dark",i=document.getElementById("theme-toggle-btn");i&&(document.body.className=t,i.onclick=()=>{const n=document.body.classList.contains("dark")?"light":"dark";document.body.className=n,localStorage.setItem("theme",n);const o=xS(n==="dark");Object.values(e.charts).forEach(a=>{const s=a;s?.options&&kS(s,o)})})}function wS(e){const t=e.connectionsOpen>0?Math.round(e.connectionsInUse/e.connectionsOpen*100):0,i=t>90?"var(--danger)":t>70?"var(--warning)":"var(--success)",r=e.stats??void 0;return`
43
43
  <div class="card card-clickable transition-all duration-200" title="Connection pool status for ${e.name}">
44
44
  <div class="card-header">
45
45
  <span class="material-symbols-rounded">database</span>
@@ -129,7 +129,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
129
129
  </div>
130
130
  ${re("Directory Path",e.directoryPath??"(Not set)")}
131
131
  </div>
132
- `}function TS(e){let t='<div class="config-view-content">';if(t+='<div class="card mb-8">',t+='<div class="card-header"><span class="material-symbols-rounded">dns</span><h3>Server Settings</h3></div>',typeof e.port=="number"&&(t+=re("Port",e.port,!0,"text-accent","The TCP port the server is listening on")),t+=re("Admin Route",e.adminRoute??"/admin",!0,"text-accent","The URL path for the administration console"),t+=re("Admin User",e.adminUser??"(Not authenticated)",!0,"text-accent","The username required for admin access"),t+=re("Admin Password",e.adminPassword??"(None)",!0,"text-accent","The password required for admin access"),t+=re("Logger Filename",e.loggerFilename??"(Logging disabled)",!0,"text-accent","The path to the server log file"),typeof e.uploadFileSizeLimit=="number"){const i=e.uploadFileSizeLimit,r=(i/(1024*1024)).toFixed(2);t+=re("Upload Size Limit",`${r} MB (${i.toLocaleString()} bytes)`,!0,"text-accent","Maximum allowed size for file uploads")}else t+=re("Upload Size Limit","No limit",!1,"text-accent","Maximum allowed size for file uploads");return t+="</div>",t+=al("PL/SQL Routes","database"),e.routePlSql?.length?t+=e.routePlSql.map((i,r)=>IS(i,r)).join(""):t+='<div class="empty-state">No PL/SQL routes configured</div>',t+=al("Static Routes","folder_shared"),e.routeStatic?.length?t+=e.routeStatic.map((i,r)=>zS(i,r)).join(""):t+='<div class="empty-state">No static routes configured</div>',t+="</div>",t}class ep{element=null;elementId;options;constructor(t,i){this.elementId=t,this.options=i}render(t){this.element=document.getElementById(this.elementId),this.element&&(this.options.dense?this.element.classList.add("dense-table"):this.element.classList.remove("dense-table"),this.options.tableLayout&&(this.element.style.tableLayout=this.options.tableLayout),this.renderHeader(),this.renderBody(t))}renderHeader(){if(!this.element)return;let t=this.element.querySelector("thead");t||(t=document.createElement("thead"),this.element.appendChild(t)),t.innerHTML="";const i=document.createElement("tr");this.options.columns.forEach(r=>{const n=document.createElement("th");n.textContent=r.header,r.headerTitle&&(n.title=r.headerTitle),r.width&&(n.style.width=r.width),r.align&&(n.style.textAlign=r.align),i.appendChild(n)}),t.appendChild(i)}renderBody(t){if(!this.element)return;let i=this.element.querySelector("tbody");i||(i=document.createElement("tbody"),this.element.appendChild(i)),i.innerHTML="",t.forEach(r=>{const n=document.createElement("tr");this.options.onRowClick&&(n.style.cursor="pointer",n.addEventListener("click",()=>{this.options.onRowClick&&this.options.onRowClick(r)}),n.classList.add("table-row-hover")),this.options.columns.forEach(o=>{const a=document.createElement("td");if(o.render)a.innerHTML=o.render(r);else if(o.accessor){const s=o.accessor(r);a.textContent=s!=null?String(s):""}if(o.className){const s=typeof o.className=="function"?o.className(r):o.className;s&&(a.className=s)}o.align&&(a.style.textAlign=o.align),o.cellTitle&&(a.title=o.cellTitle(r)),n.appendChild(a)}),i.appendChild(n)})}}async function Cr(){const e=document.getElementById("error-filter"),t=document.getElementById("error-limit"),i=e?.value??"",r=t?parseInt(t.value):100,n=await $e.getErrorLogs(r,i),o=[{id:"timestamp",header:"Timestamp",headerTitle:"When the error occurred",accessor:c=>new Date(c.timestamp).toLocaleString(),cellTitle:c=>new Date(c.timestamp).toLocaleString()},{id:"method",header:"Method",headerTitle:"HTTP method used",render:c=>`<code>${c.req?.method??"-"}</code>`,cellTitle:c=>`Method: ${c.req?.method??"-"}`},{id:"url",header:"URL",headerTitle:"Requested URL",accessor:c=>c.req?.url??"-",cellTitle:c=>`URL: ${c.req?.url??"-"}`},{id:"message",header:"Message",headerTitle:"Error message summary",accessor:c=>c.message,className:"break-all",cellTitle:c=>`Click for details: ${c.details?.fullMessage??""}`},{id:"action",header:"",width:"40px",align:"center",render:()=>'<span class="material-symbols-rounded">chevron_right</span>',className:"text-center text-accent opacity-70"}];new ep("errors-table",{columns:o,dense:!0,onRowClick:c=>{const l=document.getElementById("error-modal"),u=document.getElementById("error-detail-content");l&&u&&(u.textContent=JSON.stringify(c,null,2),l.style.display="flex")}}).render(n);const s=document.querySelector("#errors-table tbody");s&&s.querySelectorAll("tr").forEach(c=>{c.classList.add("errors-table-row")})}async function xs(){const e=document.getElementById("stats-limit"),t=document.getElementById("stats-history-info"),i=document.querySelector("#stats-table tbody");if(!i)return;const r=e?parseInt(e.value):50;try{const n=await $e.getStatsHistory(r);t&&(t.textContent=`Showing latest ${n.length} data points`),i.innerHTML=n.map(o=>{const a=new Date(o.timestamp).toLocaleTimeString(),s=(o.system.rss/1024/1024).toFixed(1),c=(o.system.heapUsed/1024/1024).toFixed(1);return`
132
+ `}function TS(e){let t='<div class="config-view-content">';if(t+='<div class="card mb-8">',t+='<div class="card-header"><span class="material-symbols-rounded">dns</span><h3>Server Settings</h3></div>',typeof e.port=="number"&&(t+=re("Port",e.port,!0,"text-accent","The TCP port the server is listening on")),t+=re("Admin Route",e.adminRoute??"/admin",!0,"text-accent","The URL path for the administration console"),t+=re("Admin User",e.adminUser??"(Not authenticated)",!0,"text-accent","The username required for admin access"),t+=re("Admin Password",e.adminPassword??"(None)",!0,"text-accent","The password required for admin access"),t+=re("Logger Filename",e.loggerFilename??"(Logging disabled)",!0,"text-accent","The path to the server log file"),typeof e.uploadFileSizeLimit=="number"){const i=e.uploadFileSizeLimit,r=(i/(1024*1024)).toFixed(2);t+=re("Upload Size Limit",`${r} MB (${i.toLocaleString()} bytes)`,!0,"text-accent","Maximum allowed size for file uploads")}else t+=re("Upload Size Limit","No limit",!1,"text-accent","Maximum allowed size for file uploads");return t+="</div>",t+=al("PL/SQL Routes","database"),t+=e.routePlSql?.length?e.routePlSql.map((i,r)=>IS(i,r)).join(""):'<div class="empty-state">No PL/SQL routes configured</div>',t+=al("Static Routes","folder_shared"),t+=e.routeStatic?.length?e.routeStatic.map((i,r)=>zS(i,r)).join(""):'<div class="empty-state">No static routes configured</div>',t+="</div>",t}class ep{element=null;elementId;options;constructor(t,i){this.elementId=t,this.options=i}render(t){this.element=document.getElementById(this.elementId),this.element&&(this.options.dense?this.element.classList.add("dense-table"):this.element.classList.remove("dense-table"),this.options.tableLayout&&(this.element.style.tableLayout=this.options.tableLayout),this.renderHeader(),this.renderBody(t))}renderHeader(){if(!this.element)return;let t=this.element.querySelector("thead");t||(t=document.createElement("thead"),this.element.appendChild(t)),t.innerHTML="";const i=document.createElement("tr");this.options.columns.forEach(r=>{const n=document.createElement("th");n.textContent=r.header,r.headerTitle&&(n.title=r.headerTitle),r.width&&(n.style.width=r.width),r.align&&(n.style.textAlign=r.align),i.appendChild(n)}),t.appendChild(i)}renderBody(t){if(!this.element)return;let i=this.element.querySelector("tbody");i||(i=document.createElement("tbody"),this.element.appendChild(i)),i.innerHTML="",t.forEach(r=>{const n=document.createElement("tr");this.options.onRowClick&&(n.style.cursor="pointer",n.addEventListener("click",()=>{this.options.onRowClick&&this.options.onRowClick(r)}),n.classList.add("table-row-hover")),this.options.columns.forEach(o=>{const a=document.createElement("td");if(o.render)a.innerHTML=o.render(r);else if(o.accessor){const s=o.accessor(r);a.textContent=s!=null?String(s):""}if(o.className){const s=typeof o.className=="function"?o.className(r):o.className;s&&(a.className=s)}o.align&&(a.style.textAlign=o.align),o.cellTitle&&(a.title=o.cellTitle(r)),n.appendChild(a)}),i.appendChild(n)})}}async function Cr(){const e=document.getElementById("error-filter"),t=document.getElementById("error-limit"),i=e?.value??"",r=t?Number.parseInt(t.value):100,n=await $e.getErrorLogs(r,i),o=[{id:"timestamp",header:"Timestamp",headerTitle:"When the error occurred",accessor:c=>new Date(c.timestamp).toLocaleString(),cellTitle:c=>new Date(c.timestamp).toLocaleString()},{id:"method",header:"Method",headerTitle:"HTTP method used",render:c=>`<code>${c.req?.method??"-"}</code>`,cellTitle:c=>`Method: ${c.req?.method??"-"}`},{id:"url",header:"URL",headerTitle:"Requested URL",accessor:c=>c.req?.url??"-",cellTitle:c=>`URL: ${c.req?.url??"-"}`},{id:"message",header:"Message",headerTitle:"Error message summary",accessor:c=>c.message,className:"break-all",cellTitle:c=>`Click for details: ${c.details?.fullMessage??""}`},{id:"action",header:"",width:"40px",align:"center",render:()=>'<span class="material-symbols-rounded">chevron_right</span>',className:"text-center text-accent opacity-70"}];new ep("errors-table",{columns:o,dense:!0,onRowClick:c=>{const l=document.getElementById("error-modal"),u=document.getElementById("error-detail-content");l&&u&&(u.textContent=JSON.stringify(c,null,2),l.style.display="flex")}}).render(n);const s=document.querySelector("#errors-table tbody");s&&s.querySelectorAll("tr").forEach(c=>{c.classList.add("errors-table-row")})}async function xs(){const e=document.getElementById("stats-limit"),t=document.getElementById("stats-history-info"),i=document.querySelector("#stats-table tbody");if(!i)return;const r=e?Number.parseInt(e.value):50;try{const n=await $e.getStatsHistory(r);t&&(t.textContent=`Showing latest ${n.length} data points`),i.innerHTML=n.map(o=>{const a=new Date(o.timestamp).toLocaleTimeString(),s=(o.system.rss/1024/1024).toFixed(1),c=(o.system.heapUsed/1024/1024).toFixed(1);return`
133
133
  <tr>
134
134
  <td class="font-mono text-xs">${a}</td>
135
135
  <td class="text-center font-bold text-bright">${o.requests}</td>
@@ -143,5 +143,5 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
143
143
  <td class="text-right font-mono">${s}</td>
144
144
  <td class="text-right font-mono">${c}</td>
145
145
  </tr>
146
- `}).join("")}catch(n){console.error("Failed to load stats history:",n),t&&(t.textContent="Failed to load stats")}}async function tp(){const e=document.getElementById("access-filter"),t=document.getElementById("access-limit"),i=e?.value??"",r=t?parseInt(t.value):100,n=await $e.getAccessLogs(r,i),o=document.getElementById("access-log-view"),a=document.getElementById("access-log-range");if(!o)return;let s=0;Array.isArray(n)?(o.textContent=n.join(`
147
- `),s=n.length):n&&typeof n=="object"&&"message"in n?(o.textContent=n.message,s=0):(o.textContent="No logs available",s=0),a&&(a.textContent=s>0?`Showing last ${s} log entries`:"No logs available"),o.parentElement&&(o.parentElement.scrollTop=o.parentElement.scrollHeight)}async function Xt(){const e=document.getElementById("trace-filter"),t=document.getElementById("trace-limit"),i=document.getElementById("trace-status-toggle"),r=e?.value??"",n=t?parseInt(t.value):100;try{const{enabled:c}=await $e.getTraceStatus();i&&(i.textContent=c?"Tracing: ON":"Tracing: OFF",i.dataset.enabled=String(c),i.className=`px-4 py-2 rounded-lg text-sm font-bold transition-colors ${c?"bg-success text-black hover:bg-success/80":"bg-white/10 text-white hover:bg-white/20"}`)}catch(c){console.error("Failed to get trace status",c)}const o=await $e.getTraceLogs(n,r),a=[{id:"timestamp",header:"Timestamp",headerTitle:"Time of request",width:"1%",accessor:c=>new Date(c.timestamp).toLocaleString(),className:"font-mono text-xs text-dim whitespace-nowrap"},{id:"source",header:"Source",headerTitle:"Request source (IP/User)",width:"1%",accessor:c=>c.source,className:"text-dim text-xs truncate max-w-[150px]",cellTitle:c=>c.source},{id:"method",header:"Method",headerTitle:"HTTP Method",width:"1%",accessor:c=>c.method,className:"font-mono text-xs whitespace-nowrap"},{id:"url",header:"Request URL",headerTitle:"Request URL",accessor:c=>c.url,className:"text-bright font-mono text-xs truncate max-w-[800px]",cellTitle:c=>c.url},{id:"status",header:"Status",headerTitle:"HTTP Status Code",width:"1%",accessor:c=>c.status,className:c=>`font-bold text-xs uppercase whitespace-nowrap ${c.status==="success"?"text-success":"text-danger"}`},{id:"duration",header:"Duration",headerTitle:"Execution time in ms",width:"1%",align:"right",accessor:c=>$s(c.duration),className:"font-mono text-xs text-dim whitespace-nowrap"}];new ep("trace-table",{columns:a,dense:!0,tableLayout:"auto",onRowClick:c=>{const l=document.getElementById("trace-modal"),u=document.getElementById("trace-detail-content");l&&u&&(u.textContent=JSON.stringify(c,null,2),l.style.display="flex")}}).render(o)}function np(e){const t=document.getElementById("pools-container");!t||!e.pools||(t.innerHTML=e.pools.map(i=>wS(i)).join(""))}function ip(e){const t=e.status.config;if(!t)return;const i=document.getElementById("config-view");i&&(i.innerHTML=TS(t))}function Jr(e){if(e===0)return"0 B";const t=1024,i=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,r)).toFixed(2))} ${i[r]}`}function sl(e){return $s(e/1e3)}function ks(e,t){const i=document.getElementById("middleware-version");i&&e.version&&(i.textContent=`${e.version} (2/14/2026, 1:53:00 PM)`,i.title="The version of the web_plsql gateway and admin console build time");const r=document.getElementById("node-version");r&&e.system&&(r.textContent=e.system.nodeVersion,r.title="The version of the Node.js runtime");const n=document.getElementById("platform-info");n&&e.system&&(n.textContent=`${e.system.platform} (${e.system.arch})`,n.title="The operating system and architecture");const o=document.getElementById("system-uptime");o&&e.uptime&&(o.textContent=_s(e.uptime));const a=document.getElementById("system-start-time");a&&e.startTime&&(a.textContent=Qg(e.startTime));const s=document.getElementById("system-status-text");s&&(s.textContent=e.status?.toUpperCase()??"-");const c=document.getElementById("total-requests");c&&e.metrics&&(c.textContent=e.metrics.requestCount.toLocaleString(),c.title="Cumulative number of requests handled by the server");const l=document.getElementById("total-errors");l&&e.metrics&&(l.textContent=e.metrics.errorCount.toLocaleString(),l.title="Cumulative number of failed requests");const u=document.getElementById("active-pools");if(u&&e.pools&&(u.textContent=e.pools.length.toString(),u.title="Number of database connection pools currently active"),e.system){const d=e.system,f={heapUsed:d.memory.heapUsed,heapTotal:d.memory.heapTotal,rss:d.memory.rss,external:d.memory.external,cpuUser:d.cpu.user,cpuSystem:d.cpu.system},h=(_,k,x)=>{const y=f[k],z=d.memory[x],T=document.getElementById(_),I=document.getElementById(`${_}-max`);T&&(T.textContent=Jr(y)),I&&typeof z=="number"&&(I.textContent=Jr(z))},g=(_,k,x)=>{const y=f[k],z=document.getElementById(_);if(z&&(z.textContent=sl(y)),x){const T=d.cpu[x],I=document.getElementById(`${_}-max`);I&&typeof T=="number"&&(I.textContent=sl(T))}};h("memory-heap-used","heapUsed","heapUsedMax"),h("memory-heap-total","heapTotal","heapTotalMax"),h("memory-rss","rss","rssMax"),h("memory-external","external","externalMax"),g("cpu-user","cpuUser","userMax"),g("cpu-system","cpuSystem","systemMax");const m=document.getElementById("cpu-percent");if(m&&d.cpu.max!==void 0){const _=d.cpu.max;m.textContent=`${_.toFixed(1)}%`,m.title="Max System CPU usage"}const p=document.getElementById("memory-percent");if(p&&d.memory.totalMemory){const _=d.memory.rss/d.memory.totalMemory*100;p.textContent=`${_.toFixed(1)}%`,p.title=`System Memory Used relative to Total (${Jr(d.memory.totalMemory)})`}const b=document.getElementById("cpu-cores-info");b&&d.cpuCores&&(b.textContent=`${d.cpuCores} Cores`)}}async function Qn(e,t){const i=e.querySelector(".material-symbols-rounded"),r=i?.textContent;e.disabled=!0,e.classList.add("loading"),i&&(i.textContent="sync",i.classList.add("animate-spin"));try{return await t()}finally{e.disabled=!1,e.classList.remove("loading"),i&&(i.textContent=r??"",i.classList.remove("animate-spin"))}}function ot(e,t){const i=document.getElementById(e);return i&&(i.onclick=()=>{Qn(i,t)}),i}const OS={overview:"dashboard",trace:"bolt",errors:"error",access:"list_alt",pools:"database",stats:"query_stats",config:"settings",system:"terminal"},O={currentView:"overview",status:{},maxHistoryPoints:30,lastRequestCount:0,lastErrorCount:0,lastUpdateTime:Date.now(),lastBucketTimestamp:0,nextRefreshTimeout:null,nextRefreshTime:0,countdownInterval:null,history:{labels:[],requests:[],avgResponseTimes:[],p95ResponseTimes:[],p99ResponseTimes:[],cpuUsage:[],memoryUsage:[],poolUsage:{}},charts:{},metricsMin:{},metricsMax:{}},at={REFRESH_INTERVAL:"admin_refresh_interval",HISTORY_DURATION:"admin_history_duration",AUTO_REFRESH:"admin_auto_refresh",THEME:"theme",LAST_VIEW:"admin_last_view"};function rp(e){console.error("Connection lost:",e);const t=document.getElementById("server-status-dot"),i=document.getElementById("server-status-text");t&&(t.className="dot offline"),i&&(i.textContent="OFFLINE");const r=document.getElementById("btn-pause");r&&(r.style.display="none");const n=document.getElementById("btn-resume");n&&(n.style.display="none");const o=document.querySelector("#system-status .dot"),a=document.getElementById("system-status-text");o&&(o.className="dot offline"),a&&(a.textContent="OFFLINE");const s=document.getElementById("offline-modal");s&&s.style.display!=="flex"&&(s.style.display="flex"),Ai(6e4),op(6e4)}function op(e){O.countdownInterval&&clearInterval(O.countdownInterval);const t=Date.now()+e,i=document.getElementById("offline-countdown"),r=document.getElementById("reconnect-text");r&&(r.textContent="Try Reconnect");const n=()=>{if(!i)return;const o=Math.max(0,Math.ceil((t-Date.now())/1e3));i.textContent=`Retrying in ${o}s...`,o<=0&&O.countdownInterval&&(clearInterval(O.countdownInterval),O.countdownInterval=null)};n(),O.countdownInterval=setInterval(n,1e3)}function DS(){O.countdownInterval&&(clearInterval(O.countdownInterval),O.countdownInterval=null);const e=document.getElementById("offline-countdown");e&&(e.textContent="")}async function qe(e=!1,t=!1){const i=document.getElementById("reconnect-spinner"),r=document.getElementById("reconnect-icon"),n=document.getElementById("reconnect-text");i&&(i.style.display="inline-block"),r&&(r.style.display="none"),n&&(n.textContent="Connecting...");try{const o=Date.now(),a=await $e.getStatus(e,t),s=document.getElementById("offline-modal");if(s?.style.display==="flex"&&s&&(s.style.display="none",DS()),i&&(i.style.display="none"),r&&(r.style.display="inline-block"),n&&(n.textContent="Try Reconnect"),a.history&&O.history.labels.length===0&&_S(O,a.history),!a.config&&O.status.config&&(a.config=O.status.config),O.status=a,!a.metrics||!a.pools)return;const l=a.history?.[a.history.length-1],u=(a.intervalMs??Yg)/1e3,d=l?l.requests/u:0,f=l?l.durationAvg:a.metrics.avgResponseTime;if(O.lastRequestCount=a.metrics.requestCount,O.lastErrorCount=a.metrics.errorCount,O.lastUpdateTime=o,a.system){const U=a.system,Q={heapUsed:U.memory.heapUsed,heapTotal:U.memory.heapTotal,rss:U.memory.rss,external:U.memory.external,cpuUser:U.cpu.user,cpuSystem:U.cpu.system};$S(Q,O.metricsMin,O.metricsMax)}if(l&&l.timestamp>O.lastBucketTimestamp){O.lastBucketTimestamp=l.timestamp;const U=new Date(l.timestamp).toLocaleTimeString();ol(O,U,d,f,a.pools)}else if(!l&&O.history.labels.length===0){const U=new Date().toLocaleTimeString();ol(O,U,0,0,a.pools)}const h=document.getElementById("sidebar-version");h&&(h.textContent=`v${a.version}`);const g=document.getElementById("uptime-val");g&&(g.textContent=_s(a.uptime));const m=document.getElementById("start-time-val");m&&(m.textContent=`Started: ${Qg(a.startTime)}`);const p=document.getElementById("req-per-sec");p&&(p.textContent=d.toFixed(2));const b=document.getElementById("max-req-per-sec");b&&(b.textContent=a.metrics.maxRequestsPerSecond.toFixed(2));const _=document.getElementById("avg-resp-time");_&&(_.textContent=`${a.metrics.avgResponseTime.toFixed(1)}ms`);const k=document.getElementById("max-resp-time");k&&(k.textContent=`${a.metrics.maxResponseTime.toFixed(1)}ms`);const x=document.getElementById("err-count");x&&(x.textContent=a.metrics.errorCount.toLocaleString());let y=0,z=0;a.pools.forEach(U=>{U.cache&&(y+=U.cache.procedureName.hits+U.cache.argument.hits,z+=U.cache.procedureName.misses+U.cache.argument.misses)});const T=y+z,I=T>0?Math.round(y/T*100):0,E=document.getElementById("cache-hit-rate-val");E&&(E.textContent=`${I}%`,E.style.color=I>80?"var(--success)":I>50?"var(--warning)":"var(--danger)");const R=document.getElementById("cache-hits-val");R&&(R.textContent=y.toLocaleString());const A=document.getElementById("cache-misses-val");A&&(A.textContent=z.toLocaleString());const F=document.getElementById("server-status-dot"),ie=document.getElementById("server-status-text");F&&(F.className="dot "+a.status),ie&&(ie.textContent=a.status.toUpperCase());const se=document.getElementById("btn-pause");se&&(se.style.display=a.status==="running"?"flex":"none");const W=document.getElementById("btn-resume");if(W&&(W.style.display=a.status==="paused"?"flex":"none"),O.currentView==="errors"&&await Cr(),O.currentView==="trace"&&await Xt(),O.currentView==="pools"&&np(a),O.currentView==="config"&&ip(O),O.currentView==="system"&&ks(a,O),Vt?.checked&&Ue){const U=parseInt(Ue.value);Ai(U)}}catch(o){document.getElementById("offline-modal")?.style.display!=="flex"?rp(o):(Ai(6e4),op(6e4),i&&(i.style.display="none"),r&&(r.style.display="inline-block"),n&&(n.textContent="Try Reconnect"))}}function Ai(e){O.nextRefreshTimeout&&(clearTimeout(O.nextRefreshTimeout),O.nextRefreshTimeout=null),O.nextRefreshTime=Date.now()+e,O.nextRefreshTimeout=setTimeout(()=>{qe()},e)}function ap(){const e=document.getElementById("refresh-interval");if(e){const t=parseInt(e.value);Ai(t)}}function PS(){O.nextRefreshTimeout&&(clearTimeout(O.nextRefreshTimeout),O.nextRefreshTimeout=null)}function sp(){const e=document.getElementById("chart-history-points");e&&Array.from(e.options).forEach(t=>{const i=parseInt(t.value);let r="";if(i<60)r=`${i}s`;else if(i<3600)r=`${Math.round(i/60)} min`;else{const n=i/3600;r=n===Math.round(n)?`${n} hour${n>1?"s":""}`:`${n.toFixed(1)} hours`}t.textContent=`Last ${r}`})}document.querySelectorAll("nav button").forEach(e=>{const t=e;t.onclick=async()=>{try{const i=t.dataset.view;if(!i)return;O.currentView=i,localStorage.setItem(at.LAST_VIEW,i),document.querySelectorAll(".view").forEach(o=>{const a=o;a.style.display="none"});const r=document.getElementById("view-"+i);r&&(r.style.display="block"),document.querySelectorAll("nav button").forEach(o=>o.classList.remove("active")),t.classList.add("active");const n=document.getElementById("view-title");if(n){const a=Array.from(t.childNodes).filter(c=>c.nodeType===Node.TEXT_NODE).map(c=>c.textContent?.trim()).join(""),s=OS[i]??"chevron_right";n.innerHTML=`<span class="material-symbols-rounded">${s}</span>${a}`}i==="errors"&&await Cr(),i==="trace"&&await Xt(),i==="pools"&&np(O.status),i==="stats"&&await xs(),i==="config"&&ip(O),i==="system"&&ks(O.status,O)}catch(i){rp(i)}}});const Vt=document.getElementById("auto-refresh-toggle");Vt&&(Vt.onchange=e=>{const t=e.target;localStorage.setItem(at.AUTO_REFRESH,String(t.checked)),t.checked?ap():PS()});const Ue=document.getElementById("refresh-interval");Ue&&(Ue.onchange=()=>{localStorage.setItem(at.REFRESH_INTERVAL,Ue.value);const e=parseInt(Ue.value),t=parseInt(We?.value??"60");O.maxHistoryPoints=Math.max(1,Math.floor(t/(e/1e3))),O.history.labels=[],O.history.requests=[],O.history.avgResponseTimes=[],O.history.cpuUsage=[],O.history.memoryUsage=[],O.history.poolUsage={},sp(),ks(O.status),qe()});const We=document.getElementById("chart-history-points");We&&(We.onchange=()=>{localStorage.setItem(at.HISTORY_DURATION,We.value);const e=document.getElementById("refresh-interval");if(!e)return;const t=parseInt(e.value),i=parseInt(We.value);O.maxHistoryPoints=Math.max(1,Math.floor(i/(t/1e3))),O.history.labels=[],O.history.requests=[],O.history.avgResponseTimes=[],O.history.cpuUsage=[],O.history.memoryUsage=[],O.history.poolUsage={},qe()});const qr=document.getElementById("manual-refresh");qr&&(qr.onclick=()=>{Qn(qr,qe)});const cl=document.getElementById("error-filter");cl&&(cl.onkeydown=e=>{e.key==="Enter"&&Cr()});ot("error-load-btn",Cr);ot("trace-load-btn",Xt);ot("access-load-btn",tp);ot("stats-load-btn",xs);const ll=document.getElementById("trace-filter");ll&&(ll.onkeydown=e=>{e.key==="Enter"&&Xt()});const Kr=document.getElementById("trace-clear-btn");Kr&&(Kr.onclick=async()=>{confirm("Are you sure you want to clear all traces?")&&await Qn(Kr,async()=>{await $e.clearTraces(),await Xt()})});const Xr=document.getElementById("trace-status-toggle");Xr&&(Xr.onclick=async()=>{await Qn(Xr,async()=>{const{enabled:e}=await $e.getTraceStatus();await $e.toggleTrace(!e),await Xt()})});const ul=document.getElementById("access-filter");ul&&(ul.onkeydown=e=>{e.key==="Enter"&&tp()});const dl=document.getElementById("stats-limit");dl&&(dl.onkeydown=e=>{e.key==="Enter"&&xs()});ot("btn-pause",async()=>{confirm("Are you sure you want to pause the server?")&&(await $e.post("api/server/pause"),await qe())});ot("btn-resume",async()=>{await $e.post("api/server/resume"),await qe()});ot("btn-stop",async()=>{confirm("Are you sure you want to STOP the server? This action cannot be undone from the web interface.")&&(await $e.post("api/server/stop"),alert("Server stop requested. The interface will now become unresponsive."))});ot("btn-clear-all-cache",async()=>{confirm("Are you sure you want to clear ALL caches?")&&(await $e.post("api/cache/clear"),await qe())});const Gr=document.getElementById("btn-reconnect");Gr&&(Gr.onclick=()=>{Qn(Gr,qe)});window.addEventListener("keydown",e=>{if(e.key==="Escape"){const t=document.getElementById("error-modal");t&&(t.style.display="none");const i=document.getElementById("trace-modal");i&&(i.style.display="none")}});const fl=localStorage.getItem(at.REFRESH_INTERVAL);fl&&Ue&&(Ue.value=fl);const hl=localStorage.getItem(at.HISTORY_DURATION);hl&&We&&(We.value=hl);const ml=localStorage.getItem(at.AUTO_REFRESH);ml!==null&&Vt&&(Vt.checked=ml==="true");SS(O);yS(O);sp();if(Ue&&We){const e=parseInt(Ue.value),t=parseInt(We.value);O.maxHistoryPoints=Math.max(1,Math.floor(t/(e/1e3)))}const gl=localStorage.getItem(at.LAST_VIEW);if(gl){const e=document.querySelector(`nav button[data-view="${gl}"]`);e&&e.click()}qe(!0,!0).then(()=>{Vt?.checked&&ap()}).catch(console.error);
146
+ `}).join("")}catch(n){console.error("Failed to load stats history:",n),t&&(t.textContent="Failed to load stats")}}async function tp(){const e=document.getElementById("access-filter"),t=document.getElementById("access-limit"),i=e?.value??"",r=t?Number.parseInt(t.value):100,n=await $e.getAccessLogs(r,i),o=document.getElementById("access-log-view"),a=document.getElementById("access-log-range");if(!o)return;let s=0;Array.isArray(n)?(o.textContent=n.join(`
147
+ `),s=n.length):n&&typeof n=="object"&&"message"in n?(o.textContent=n.message,s=0):(o.textContent="No logs available",s=0),a&&(a.textContent=s>0?`Showing last ${s} log entries`:"No logs available"),o.parentElement&&(o.parentElement.scrollTop=o.parentElement.scrollHeight)}async function Xt(){const e=document.getElementById("trace-filter"),t=document.getElementById("trace-limit"),i=document.getElementById("trace-status-toggle"),r=e?.value??"",n=t?Number.parseInt(t.value):100;try{const{enabled:c}=await $e.getTraceStatus();i&&(i.textContent=c?"Tracing: ON":"Tracing: OFF",i.dataset.enabled=String(c),i.className=`px-4 py-2 rounded-lg text-sm font-bold transition-colors ${c?"bg-success text-black hover:bg-success/80":"bg-white/10 text-white hover:bg-white/20"}`)}catch(c){console.error("Failed to get trace status",c)}const o=await $e.getTraceLogs(n,r),a=[{id:"timestamp",header:"Timestamp",headerTitle:"Time of request",width:"1%",accessor:c=>new Date(c.timestamp).toLocaleString(),className:"font-mono text-xs text-dim whitespace-nowrap"},{id:"source",header:"Source",headerTitle:"Request source (IP/User)",width:"1%",accessor:c=>c.source,className:"text-dim text-xs truncate max-w-[150px]",cellTitle:c=>c.source},{id:"method",header:"Method",headerTitle:"HTTP Method",width:"1%",accessor:c=>c.method,className:"font-mono text-xs whitespace-nowrap"},{id:"url",header:"Request URL",headerTitle:"Request URL",accessor:c=>c.url,className:"text-bright font-mono text-xs truncate max-w-[800px]",cellTitle:c=>c.url},{id:"status",header:"Status",headerTitle:"HTTP Status Code",width:"1%",accessor:c=>c.status,className:c=>`font-bold text-xs uppercase whitespace-nowrap ${c.status==="success"?"text-success":"text-danger"}`},{id:"duration",header:"Duration",headerTitle:"Execution time in ms",width:"1%",align:"right",accessor:c=>$s(c.duration),className:"font-mono text-xs text-dim whitespace-nowrap"}];new ep("trace-table",{columns:a,dense:!0,tableLayout:"auto",onRowClick:c=>{const l=document.getElementById("trace-modal"),u=document.getElementById("trace-detail-content");l&&u&&(u.textContent=JSON.stringify(c,null,2),l.style.display="flex")}}).render(o)}function np(e){const t=document.getElementById("pools-container");!t||!e.pools||(t.innerHTML=e.pools.map(i=>wS(i)).join(""))}function ip(e){const t=e.status.config;if(!t)return;const i=document.getElementById("config-view");i&&(i.innerHTML=TS(t))}function Jr(e){if(e===0)return"0 B";const t=1024,i=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${Number.parseFloat((e/Math.pow(t,r)).toFixed(2))} ${i[r]}`}function sl(e){return $s(e/1e3)}function ks(e,t){const i=document.getElementById("middleware-version");i&&e.version&&(i.textContent=`${e.version} (2/22/2026, 11:54:57 PM)`,i.title="The version of the web_plsql gateway and admin console build time");const r=document.getElementById("node-version");r&&e.system&&(r.textContent=e.system.nodeVersion,r.title="The version of the Node.js runtime");const n=document.getElementById("platform-info");n&&e.system&&(n.textContent=`${e.system.platform} (${e.system.arch})`,n.title="The operating system and architecture");const o=document.getElementById("system-uptime");o&&e.uptime&&(o.textContent=_s(e.uptime));const a=document.getElementById("system-start-time");a&&e.startTime&&(a.textContent=Qg(e.startTime));const s=document.getElementById("system-status-text");s&&(s.textContent=e.status?.toUpperCase()??"-");const c=document.getElementById("total-requests");c&&e.metrics&&(c.textContent=e.metrics.requestCount.toLocaleString(),c.title="Cumulative number of requests handled by the server");const l=document.getElementById("total-errors");l&&e.metrics&&(l.textContent=e.metrics.errorCount.toLocaleString(),l.title="Cumulative number of failed requests");const u=document.getElementById("active-pools");if(u&&e.pools&&(u.textContent=e.pools.length.toString(),u.title="Number of database connection pools currently active"),e.system){const d=e.system,f={heapUsed:d.memory.heapUsed,heapTotal:d.memory.heapTotal,rss:d.memory.rss,external:d.memory.external,cpuUser:d.cpu.user,cpuSystem:d.cpu.system},h=(_,k,x)=>{const y=f[k],z=d.memory[x],T=document.getElementById(_),I=document.getElementById(`${_}-max`);T&&(T.textContent=Jr(y)),I&&typeof z=="number"&&(I.textContent=Jr(z))},g=(_,k,x)=>{const y=f[k],z=document.getElementById(_);if(z&&(z.textContent=sl(y)),x){const T=d.cpu[x],I=document.getElementById(`${_}-max`);I&&typeof T=="number"&&(I.textContent=sl(T))}};h("memory-heap-used","heapUsed","heapUsedMax"),h("memory-heap-total","heapTotal","heapTotalMax"),h("memory-rss","rss","rssMax"),h("memory-external","external","externalMax"),g("cpu-user","cpuUser","userMax"),g("cpu-system","cpuSystem","systemMax");const m=document.getElementById("cpu-percent");if(m&&d.cpu.max!==void 0){const _=d.cpu.max;m.textContent=`${_.toFixed(1)}%`,m.title="Max System CPU usage"}const p=document.getElementById("memory-percent");if(p&&d.memory.totalMemory){const _=d.memory.rss/d.memory.totalMemory*100;p.textContent=`${_.toFixed(1)}%`,p.title=`System Memory Used relative to Total (${Jr(d.memory.totalMemory)})`}const b=document.getElementById("cpu-cores-info");b&&d.cpuCores&&(b.textContent=`${d.cpuCores} Cores`)}}async function Qn(e,t){const i=e.querySelector(".material-symbols-rounded"),r=i?.textContent;e.disabled=!0,e.classList.add("loading"),i&&(i.textContent="sync",i.classList.add("animate-spin"));try{return await t()}finally{e.disabled=!1,e.classList.remove("loading"),i&&(i.textContent=r??"",i.classList.remove("animate-spin"))}}function ot(e,t){const i=document.getElementById(e);return i&&i.addEventListener("click",()=>{Qn(i,t)}),i}const OS={overview:"dashboard",trace:"bolt",errors:"error",access:"list_alt",pools:"database",stats:"query_stats",config:"settings",system:"terminal"},O={currentView:"overview",status:{},maxHistoryPoints:30,lastRequestCount:0,lastErrorCount:0,lastUpdateTime:Date.now(),lastBucketTimestamp:0,nextRefreshTimeout:null,nextRefreshTime:0,countdownInterval:null,history:{labels:[],requests:[],avgResponseTimes:[],p95ResponseTimes:[],p99ResponseTimes:[],cpuUsage:[],memoryUsage:[],poolUsage:{}},charts:{},metricsMin:{},metricsMax:{}},at={REFRESH_INTERVAL:"admin_refresh_interval",HISTORY_DURATION:"admin_history_duration",AUTO_REFRESH:"admin_auto_refresh",THEME:"theme",LAST_VIEW:"admin_last_view"};function rp(e){console.error("Connection lost:",e);const t=document.getElementById("server-status-dot"),i=document.getElementById("server-status-text");t&&(t.className="dot offline"),i&&(i.textContent="OFFLINE");const r=document.getElementById("btn-pause");r&&(r.style.display="none");const n=document.getElementById("btn-resume");n&&(n.style.display="none");const o=document.querySelector("#system-status .dot"),a=document.getElementById("system-status-text");o&&(o.className="dot offline"),a&&(a.textContent="OFFLINE");const s=document.getElementById("offline-modal");s&&s.style.display!=="flex"&&(s.style.display="flex"),Ai(6e4),op(6e4)}function op(e){O.countdownInterval&&clearInterval(O.countdownInterval);const t=Date.now()+e,i=document.getElementById("offline-countdown"),r=document.getElementById("reconnect-text");r&&(r.textContent="Try Reconnect");const n=()=>{if(!i)return;const o=Math.max(0,Math.ceil((t-Date.now())/1e3));i.textContent=`Retrying in ${o}s...`,o<=0&&O.countdownInterval&&(clearInterval(O.countdownInterval),O.countdownInterval=null)};n(),O.countdownInterval=setInterval(n,1e3)}function DS(){O.countdownInterval&&(clearInterval(O.countdownInterval),O.countdownInterval=null);const e=document.getElementById("offline-countdown");e&&(e.textContent="")}async function qe(e=!1,t=!1){const i=document.getElementById("reconnect-spinner"),r=document.getElementById("reconnect-icon"),n=document.getElementById("reconnect-text");i&&(i.style.display="inline-block"),r&&(r.style.display="none"),n&&(n.textContent="Connecting...");try{const o=Date.now(),a=await $e.getStatus(e,t),s=document.getElementById("offline-modal");if(s?.style.display==="flex"&&s&&(s.style.display="none",DS()),i&&(i.style.display="none"),r&&(r.style.display="inline-block"),n&&(n.textContent="Try Reconnect"),a.history&&O.history.labels.length===0&&_S(O,a.history),!a.config&&O.status.config&&(a.config=O.status.config),O.status=a,!a.metrics||!a.pools)return;const l=a.history?.at(-1),u=(a.intervalMs??Yg)/1e3,d=l?l.requests/u:0,f=l?l.durationAvg:a.metrics.avgResponseTime;if(O.lastRequestCount=a.metrics.requestCount,O.lastErrorCount=a.metrics.errorCount,O.lastUpdateTime=o,a.system){const U=a.system,Q={heapUsed:U.memory.heapUsed,heapTotal:U.memory.heapTotal,rss:U.memory.rss,external:U.memory.external,cpuUser:U.cpu.user,cpuSystem:U.cpu.system};$S(Q,O.metricsMin,O.metricsMax)}if(l&&l.timestamp>O.lastBucketTimestamp){O.lastBucketTimestamp=l.timestamp;const U=new Date(l.timestamp).toLocaleTimeString();ol(O,U,d,f,a.pools)}else if(!l&&O.history.labels.length===0){const U=new Date().toLocaleTimeString();ol(O,U,0,0,a.pools)}const h=document.getElementById("sidebar-version");h&&(h.textContent=`v${a.version}`);const g=document.getElementById("uptime-val");g&&(g.textContent=_s(a.uptime));const m=document.getElementById("start-time-val");m&&(m.textContent=`Started: ${Qg(a.startTime)}`);const p=document.getElementById("req-per-sec");p&&(p.textContent=d.toFixed(2));const b=document.getElementById("max-req-per-sec");b&&(b.textContent=a.metrics.maxRequestsPerSecond.toFixed(2));const _=document.getElementById("avg-resp-time");_&&(_.textContent=`${a.metrics.avgResponseTime.toFixed(1)}ms`);const k=document.getElementById("max-resp-time");k&&(k.textContent=`${a.metrics.maxResponseTime.toFixed(1)}ms`);const x=document.getElementById("err-count");x&&(x.textContent=a.metrics.errorCount.toLocaleString());let y=0,z=0;a.pools.forEach(U=>{U.cache&&(y+=U.cache.procedureName.hits+U.cache.argument.hits,z+=U.cache.procedureName.misses+U.cache.argument.misses)});const T=y+z,I=T>0?Math.round(y/T*100):0,E=document.getElementById("cache-hit-rate-val");E&&(E.textContent=`${I}%`,E.style.color=I>80?"var(--success)":I>50?"var(--warning)":"var(--danger)");const R=document.getElementById("cache-hits-val");R&&(R.textContent=y.toLocaleString());const A=document.getElementById("cache-misses-val");A&&(A.textContent=z.toLocaleString());const F=document.getElementById("server-status-dot"),ie=document.getElementById("server-status-text");F&&(F.className="dot "+a.status),ie&&(ie.textContent=a.status.toUpperCase());const se=document.getElementById("btn-pause");se&&(se.style.display=a.status==="running"?"flex":"none");const W=document.getElementById("btn-resume");if(W&&(W.style.display=a.status==="paused"?"flex":"none"),O.currentView==="errors"&&await Cr(),O.currentView==="trace"&&await Xt(),O.currentView==="pools"&&np(a),O.currentView==="config"&&ip(O),O.currentView==="system"&&ks(a,O),Vt?.checked&&Ue){const U=Number.parseInt(Ue.value);Ai(U)}}catch(o){document.getElementById("offline-modal")?.style.display==="flex"?(Ai(6e4),op(6e4),i&&(i.style.display="none"),r&&(r.style.display="inline-block"),n&&(n.textContent="Try Reconnect")):rp(o)}}function Ai(e){O.nextRefreshTimeout&&(clearTimeout(O.nextRefreshTimeout),O.nextRefreshTimeout=null),O.nextRefreshTime=Date.now()+e,O.nextRefreshTimeout=setTimeout(()=>{qe()},e)}function ap(){const e=document.getElementById("refresh-interval");if(e){const t=Number.parseInt(e.value);Ai(t)}}function PS(){O.nextRefreshTimeout&&(clearTimeout(O.nextRefreshTimeout),O.nextRefreshTimeout=null)}function sp(){const e=document.getElementById("chart-history-points");e&&Array.from(e.options).forEach(t=>{const i=Number.parseInt(t.value);let r="";if(i<60)r=`${i}s`;else if(i<3600)r=`${Math.round(i/60)} min`;else{const n=i/3600;r=n===Math.round(n)?`${n} hour${n>1?"s":""}`:`${n.toFixed(1)} hours`}t.textContent=`Last ${r}`})}document.querySelectorAll("nav button").forEach(e=>{const t=e;t.addEventListener("click",async()=>{try{const i=t.dataset.view;if(!i)return;O.currentView=i,localStorage.setItem(at.LAST_VIEW,i),document.querySelectorAll(".view").forEach(o=>{const a=o;a.style.display="none"});const r=document.getElementById("view-"+i);r&&(r.style.display="block"),document.querySelectorAll("nav button").forEach(o=>o.classList.remove("active")),t.classList.add("active");const n=document.getElementById("view-title");if(n){const a=Array.from(t.childNodes).filter(c=>c.nodeType===Node.TEXT_NODE).map(c=>c.textContent?.trim()).join(""),s=OS[i]??"chevron_right";n.innerHTML=`<span class="material-symbols-rounded">${s}</span>${a}`}i==="errors"&&await Cr(),i==="trace"&&await Xt(),i==="pools"&&np(O.status),i==="stats"&&await xs(),i==="config"&&ip(O),i==="system"&&ks(O.status,O)}catch(i){rp(i)}})});const Vt=document.getElementById("auto-refresh-toggle");Vt&&Vt.addEventListener("change",e=>{const t=e.target;localStorage.setItem(at.AUTO_REFRESH,String(t.checked)),t.checked?ap():PS()});const Ue=document.getElementById("refresh-interval");Ue&&Ue.addEventListener("change",()=>{localStorage.setItem(at.REFRESH_INTERVAL,Ue.value);const e=Number.parseInt(Ue.value),t=Number.parseInt(We?.value??"60");O.maxHistoryPoints=Math.max(1,Math.floor(t/(e/1e3))),O.history.labels=[],O.history.requests=[],O.history.avgResponseTimes=[],O.history.cpuUsage=[],O.history.memoryUsage=[],O.history.poolUsage={},sp(),ks(O.status),qe()});const We=document.getElementById("chart-history-points");We&&We.addEventListener("change",()=>{localStorage.setItem(at.HISTORY_DURATION,We.value);const e=document.getElementById("refresh-interval");if(!e)return;const t=Number.parseInt(e.value),i=Number.parseInt(We.value);O.maxHistoryPoints=Math.max(1,Math.floor(i/(t/1e3))),O.history.labels=[],O.history.requests=[],O.history.avgResponseTimes=[],O.history.cpuUsage=[],O.history.memoryUsage=[],O.history.poolUsage={},qe()});const qr=document.getElementById("manual-refresh");qr&&qr.addEventListener("click",()=>{Qn(qr,qe)});const cl=document.getElementById("error-filter");cl&&cl.addEventListener("keydown",e=>{e.key==="Enter"&&Cr()});ot("error-load-btn",Cr);ot("trace-load-btn",Xt);ot("access-load-btn",tp);ot("stats-load-btn",xs);const ll=document.getElementById("trace-filter");ll&&ll.addEventListener("keydown",e=>{e.key==="Enter"&&Xt()});const Kr=document.getElementById("trace-clear-btn");Kr&&Kr.addEventListener("click",async()=>{confirm("Are you sure you want to clear all traces?")&&await Qn(Kr,async()=>{await $e.clearTraces(),await Xt()})});const Xr=document.getElementById("trace-status-toggle");Xr&&Xr.addEventListener("click",async()=>{await Qn(Xr,async()=>{const{enabled:e}=await $e.getTraceStatus();await $e.toggleTrace(!e),await Xt()})});const ul=document.getElementById("access-filter");ul&&ul.addEventListener("keydown",e=>{e.key==="Enter"&&tp()});const dl=document.getElementById("stats-limit");dl&&dl.addEventListener("keydown",e=>{e.key==="Enter"&&xs()});ot("btn-pause",async()=>{confirm("Are you sure you want to pause the server?")&&(await $e.post("api/server/pause"),await qe())});ot("btn-resume",async()=>{await $e.post("api/server/resume"),await qe()});ot("btn-stop",async()=>{confirm("Are you sure you want to STOP the server? This action cannot be undone from the web interface.")&&(await $e.post("api/server/stop"),alert("Server stop requested. The interface will now become unresponsive."))});ot("btn-clear-all-cache",async()=>{confirm("Are you sure you want to clear ALL caches?")&&(await $e.post("api/cache/clear"),await qe())});const Gr=document.getElementById("btn-reconnect");Gr&&Gr.addEventListener("click",()=>{Qn(Gr,qe)});globalThis.addEventListener("keydown",e=>{if(e.key==="Escape"){const t=document.getElementById("error-modal");t&&(t.style.display="none");const i=document.getElementById("trace-modal");i&&(i.style.display="none")}});const fl=localStorage.getItem(at.REFRESH_INTERVAL);fl&&Ue&&(Ue.value=fl);const hl=localStorage.getItem(at.HISTORY_DURATION);hl&&We&&(We.value=hl);const ml=localStorage.getItem(at.AUTO_REFRESH);ml!==null&&Vt&&(Vt.checked=ml==="true");SS(O);yS(O);sp();if(Ue&&We){const e=Number.parseInt(Ue.value),t=Number.parseInt(We.value);O.maxHistoryPoints=Math.max(1,Math.floor(t/(e/1e3)))}const gl=localStorage.getItem(at.LAST_VIEW);if(gl){const e=document.querySelector(`nav button[data-view="${gl}"]`);e&&e.click()}qe(!0,!0).then(()=>{Vt?.checked&&ap()}).catch(console.error);