academe-kit 0.3.6 → 0.3.7
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.
- package/dist/index.d.ts +6 -1
- package/dist/index.esm.js +16 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +15 -4
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +19 -19
- package/dist/types/roles/applications.d.ts +5 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/Button/Button.tsx","../node_modules/jwt-decode/build/esm/index.js","../node_modules/oidc-client-ts/dist/esm/oidc-client-ts.js","../node_modules/react-oidc-context/dist/esm/react-oidc-context.js","../node_modules/openapi-fetch/dist/index.mjs","../src/services/UserService.ts","../src/services/InstitutionService.ts","../src/services/ReportService.ts","../src/services/ClassroomService.ts","../src/services/OrganizationService.ts","../src/services/SerieService.ts","../src/services/ShiftService.ts","../src/services/GuardianService.ts","../src/services/index.ts","../src/roles/global.ts","../src/context/SecurityProvider/index.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/spinner.tsx","../src/components/ProtectedApp/index.tsx","../src/components/ProtectedComponent/index.tsx","../src/components/ProtectedRouter/index.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/roles/backoffice.ts","../src/roles/dashboard.ts","../src/roles/applications.ts","../src/types/academe-api.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import React from 'react';\nimport clsx from 'clsx';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, children, ...props }, ref) => {\n const baseClasses = 'font-semibold rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'bg-transparent border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","// src/utils/Logger.ts\nvar nopLogger = {\n debug: () => void 0,\n info: () => void 0,\n warn: () => void 0,\n error: () => void 0\n};\nvar level;\nvar logger;\nvar Log = /* @__PURE__ */ ((Log2) => {\n Log2[Log2[\"NONE\"] = 0] = \"NONE\";\n Log2[Log2[\"ERROR\"] = 1] = \"ERROR\";\n Log2[Log2[\"WARN\"] = 2] = \"WARN\";\n Log2[Log2[\"INFO\"] = 3] = \"INFO\";\n Log2[Log2[\"DEBUG\"] = 4] = \"DEBUG\";\n return Log2;\n})(Log || {});\n((Log2) => {\n function reset() {\n level = 3 /* INFO */;\n logger = nopLogger;\n }\n Log2.reset = reset;\n function setLevel(value) {\n if (!(0 /* NONE */ <= value && value <= 4 /* DEBUG */)) {\n throw new Error(\"Invalid log level\");\n }\n level = value;\n }\n Log2.setLevel = setLevel;\n function setLogger(value) {\n logger = value;\n }\n Log2.setLogger = setLogger;\n})(Log || (Log = {}));\nvar Logger = class _Logger {\n constructor(_name) {\n this._name = _name;\n }\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n debug(...args) {\n if (level >= 4 /* DEBUG */) {\n logger.debug(_Logger._format(this._name, this._method), ...args);\n }\n }\n info(...args) {\n if (level >= 3 /* INFO */) {\n logger.info(_Logger._format(this._name, this._method), ...args);\n }\n }\n warn(...args) {\n if (level >= 2 /* WARN */) {\n logger.warn(_Logger._format(this._name, this._method), ...args);\n }\n }\n error(...args) {\n if (level >= 1 /* ERROR */) {\n logger.error(_Logger._format(this._name, this._method), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n throw(err) {\n this.error(err);\n throw err;\n }\n create(method) {\n const methodLogger = Object.create(this);\n methodLogger._method = method;\n methodLogger.debug(\"begin\");\n return methodLogger;\n }\n static createStatic(name, staticMethod) {\n const staticLogger = new _Logger(`${name}.${staticMethod}`);\n staticLogger.debug(\"begin\");\n return staticLogger;\n }\n static _format(name, method) {\n const prefix = `[${name}]`;\n return method ? `${prefix} ${method}:` : prefix;\n }\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n // helpers for static class methods\n static debug(name, ...args) {\n if (level >= 4 /* DEBUG */) {\n logger.debug(_Logger._format(name), ...args);\n }\n }\n static info(name, ...args) {\n if (level >= 3 /* INFO */) {\n logger.info(_Logger._format(name), ...args);\n }\n }\n static warn(name, ...args) {\n if (level >= 2 /* WARN */) {\n logger.warn(_Logger._format(name), ...args);\n }\n }\n static error(name, ...args) {\n if (level >= 1 /* ERROR */) {\n logger.error(_Logger._format(name), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n};\nLog.reset();\n\n// src/utils/JwtUtils.ts\nimport { jwtDecode } from \"jwt-decode\";\nvar JwtUtils = class {\n // IMPORTANT: doesn't validate the token\n static decode(token) {\n try {\n return jwtDecode(token);\n } catch (err) {\n Logger.error(\"JwtUtils.decode\", err);\n throw err;\n }\n }\n static async generateSignedJwt(header, payload, privateKey) {\n const encodedHeader = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(header)));\n const encodedPayload = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(payload)));\n const encodedToken = `${encodedHeader}.${encodedPayload}`;\n const signature = await window.crypto.subtle.sign(\n {\n name: \"ECDSA\",\n hash: { name: \"SHA-256\" }\n },\n privateKey,\n new TextEncoder().encode(encodedToken)\n );\n const encodedSignature = CryptoUtils.encodeBase64Url(new Uint8Array(signature));\n return `${encodedToken}.${encodedSignature}`;\n }\n static async generateSignedJwtWithHmac(header, payload, secretKey) {\n const encodedHeader = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(header)));\n const encodedPayload = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(payload)));\n const encodedToken = `${encodedHeader}.${encodedPayload}`;\n const signature = await window.crypto.subtle.sign(\n \"HMAC\",\n secretKey,\n new TextEncoder().encode(encodedToken)\n );\n const encodedSignature = CryptoUtils.encodeBase64Url(new Uint8Array(signature));\n return `${encodedToken}.${encodedSignature}`;\n }\n};\n\n// src/utils/CryptoUtils.ts\nvar UUID_V4_TEMPLATE = \"10000000-1000-4000-8000-100000000000\";\nvar toBase64 = (val) => btoa([...new Uint8Array(val)].map((chr) => String.fromCharCode(chr)).join(\"\"));\nvar _CryptoUtils = class _CryptoUtils {\n static _randomWord() {\n const arr = new Uint32Array(1);\n crypto.getRandomValues(arr);\n return arr[0];\n }\n /**\n * Generates RFC4122 version 4 guid\n */\n static generateUUIDv4() {\n const uuid = UUID_V4_TEMPLATE.replace(\n /[018]/g,\n (c) => (+c ^ _CryptoUtils._randomWord() & 15 >> +c / 4).toString(16)\n );\n return uuid.replace(/-/g, \"\");\n }\n /**\n * PKCE: Generate a code verifier\n */\n static generateCodeVerifier() {\n return _CryptoUtils.generateUUIDv4() + _CryptoUtils.generateUUIDv4() + _CryptoUtils.generateUUIDv4();\n }\n /**\n * PKCE: Generate a code challenge\n */\n static async generateCodeChallenge(code_verifier) {\n if (!crypto.subtle) {\n throw new Error(\"Crypto.subtle is available only in secure contexts (HTTPS).\");\n }\n try {\n const encoder = new TextEncoder();\n const data = encoder.encode(code_verifier);\n const hashed = await crypto.subtle.digest(\"SHA-256\", data);\n return toBase64(hashed).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n } catch (err) {\n Logger.error(\"CryptoUtils.generateCodeChallenge\", err);\n throw err;\n }\n }\n /**\n * Generates a base64-encoded string for a basic auth header\n */\n static generateBasicAuth(client_id, client_secret) {\n const encoder = new TextEncoder();\n const data = encoder.encode([client_id, client_secret].join(\":\"));\n return toBase64(data);\n }\n /**\n * Generates a hash of a string using a given algorithm\n * @param alg\n * @param message\n */\n static async hash(alg, message) {\n const msgUint8 = new TextEncoder().encode(message);\n const hashBuffer = await crypto.subtle.digest(alg, msgUint8);\n return new Uint8Array(hashBuffer);\n }\n /**\n * Generates a rfc7638 compliant jwk thumbprint\n * @param jwk\n */\n static async customCalculateJwkThumbprint(jwk) {\n let jsonObject;\n switch (jwk.kty) {\n case \"RSA\":\n jsonObject = {\n \"e\": jwk.e,\n \"kty\": jwk.kty,\n \"n\": jwk.n\n };\n break;\n case \"EC\":\n jsonObject = {\n \"crv\": jwk.crv,\n \"kty\": jwk.kty,\n \"x\": jwk.x,\n \"y\": jwk.y\n };\n break;\n case \"OKP\":\n jsonObject = {\n \"crv\": jwk.crv,\n \"kty\": jwk.kty,\n \"x\": jwk.x\n };\n break;\n case \"oct\":\n jsonObject = {\n \"crv\": jwk.k,\n \"kty\": jwk.kty\n };\n break;\n default:\n throw new Error(\"Unknown jwk type\");\n }\n const utf8encodedAndHashed = await _CryptoUtils.hash(\"SHA-256\", JSON.stringify(jsonObject));\n return _CryptoUtils.encodeBase64Url(utf8encodedAndHashed);\n }\n static async generateDPoPProof({\n url,\n accessToken,\n httpMethod,\n keyPair,\n nonce\n }) {\n let hashedToken;\n let encodedHash;\n const payload = {\n \"jti\": window.crypto.randomUUID(),\n \"htm\": httpMethod != null ? httpMethod : \"GET\",\n \"htu\": url,\n \"iat\": Math.floor(Date.now() / 1e3)\n };\n if (accessToken) {\n hashedToken = await _CryptoUtils.hash(\"SHA-256\", accessToken);\n encodedHash = _CryptoUtils.encodeBase64Url(hashedToken);\n payload.ath = encodedHash;\n }\n if (nonce) {\n payload.nonce = nonce;\n }\n try {\n const publicJwk = await crypto.subtle.exportKey(\"jwk\", keyPair.publicKey);\n const header = {\n \"alg\": \"ES256\",\n \"typ\": \"dpop+jwt\",\n \"jwk\": {\n \"crv\": publicJwk.crv,\n \"kty\": publicJwk.kty,\n \"x\": publicJwk.x,\n \"y\": publicJwk.y\n }\n };\n return await JwtUtils.generateSignedJwt(header, payload, keyPair.privateKey);\n } catch (err) {\n if (err instanceof TypeError) {\n throw new Error(`Error exporting dpop public key: ${err.message}`);\n } else {\n throw err;\n }\n }\n }\n static async generateDPoPJkt(keyPair) {\n try {\n const publicJwk = await crypto.subtle.exportKey(\"jwk\", keyPair.publicKey);\n return await _CryptoUtils.customCalculateJwkThumbprint(publicJwk);\n } catch (err) {\n if (err instanceof TypeError) {\n throw new Error(`Could not retrieve dpop keys from storage: ${err.message}`);\n } else {\n throw err;\n }\n }\n }\n static async generateDPoPKeys() {\n return await window.crypto.subtle.generateKey(\n {\n name: \"ECDSA\",\n namedCurve: \"P-256\"\n },\n false,\n [\"sign\", \"verify\"]\n );\n }\n /**\n * Generates a client assertion JWT for client_secret_jwt authentication\n * @param client_id The client identifier\n * @param client_secret The client secret\n * @param audience The token endpoint URL (audience)\n * @param algorithm The HMAC algorithm to use (HS256, HS384, HS512). Defaults to HS256\n */\n static async generateClientAssertionJwt(client_id, client_secret, audience, algorithm = \"HS256\") {\n const now = Math.floor(Date.now() / 1e3);\n const header = {\n \"alg\": algorithm,\n \"typ\": \"JWT\"\n };\n const payload = {\n \"iss\": client_id,\n \"sub\": client_id,\n \"aud\": audience,\n \"jti\": _CryptoUtils.generateUUIDv4(),\n \"exp\": now + 300,\n // 5 minutes\n \"iat\": now\n };\n const hashMap = {\n \"HS256\": \"SHA-256\",\n \"HS384\": \"SHA-384\",\n \"HS512\": \"SHA-512\"\n };\n const hashFunction = hashMap[algorithm];\n if (!hashFunction) {\n throw new Error(`Unsupported algorithm: ${algorithm}. Supported algorithms are: HS256, HS384, HS512`);\n }\n const encoder = new TextEncoder();\n const secretKey = await crypto.subtle.importKey(\n \"raw\",\n encoder.encode(client_secret),\n { name: \"HMAC\", hash: hashFunction },\n false,\n [\"sign\"]\n );\n return await JwtUtils.generateSignedJwtWithHmac(header, payload, secretKey);\n }\n};\n/**\n * Generates a base64url encoded string\n */\n_CryptoUtils.encodeBase64Url = (input) => {\n return toBase64(input).replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n};\nvar CryptoUtils = _CryptoUtils;\n\n// src/utils/Event.ts\nvar Event = class {\n constructor(_name) {\n this._name = _name;\n this._callbacks = [];\n this._logger = new Logger(`Event('${this._name}')`);\n }\n addHandler(cb) {\n this._callbacks.push(cb);\n return () => this.removeHandler(cb);\n }\n removeHandler(cb) {\n const idx = this._callbacks.lastIndexOf(cb);\n if (idx >= 0) {\n this._callbacks.splice(idx, 1);\n }\n }\n async raise(...ev) {\n this._logger.debug(\"raise:\", ...ev);\n for (const cb of this._callbacks) {\n await cb(...ev);\n }\n }\n};\n\n// src/utils/PopupUtils.ts\nvar PopupUtils = class {\n /**\n * Populates a map of window features with a placement centered in front of\n * the current window. If no explicit width is given, a default value is\n * binned into [800, 720, 600, 480, 360] based on the current window's width.\n */\n static center({ ...features }) {\n var _a, _b, _c;\n if (features.width == null)\n features.width = (_a = [800, 720, 600, 480].find((width) => width <= window.outerWidth / 1.618)) != null ? _a : 360;\n (_b = features.left) != null ? _b : features.left = Math.max(0, Math.round(window.screenX + (window.outerWidth - features.width) / 2));\n if (features.height != null)\n (_c = features.top) != null ? _c : features.top = Math.max(0, Math.round(window.screenY + (window.outerHeight - features.height) / 2));\n return features;\n }\n static serialize(features) {\n return Object.entries(features).filter(([, value]) => value != null).map(([key, value]) => `${key}=${typeof value !== \"boolean\" ? value : value ? \"yes\" : \"no\"}`).join(\",\");\n }\n};\n\n// src/utils/Timer.ts\nvar Timer = class _Timer extends Event {\n constructor() {\n super(...arguments);\n this._logger = new Logger(`Timer('${this._name}')`);\n this._timerHandle = null;\n this._expiration = 0;\n this._callback = () => {\n const diff = this._expiration - _Timer.getEpochTime();\n this._logger.debug(\"timer completes in\", diff);\n if (this._expiration <= _Timer.getEpochTime()) {\n this.cancel();\n void super.raise();\n }\n };\n }\n // get the time\n static getEpochTime() {\n return Math.floor(Date.now() / 1e3);\n }\n init(durationInSeconds) {\n const logger2 = this._logger.create(\"init\");\n durationInSeconds = Math.max(Math.floor(durationInSeconds), 1);\n const expiration = _Timer.getEpochTime() + durationInSeconds;\n if (this.expiration === expiration && this._timerHandle) {\n logger2.debug(\"skipping since already initialized for expiration at\", this.expiration);\n return;\n }\n this.cancel();\n logger2.debug(\"using duration\", durationInSeconds);\n this._expiration = expiration;\n const timerDurationInSeconds = Math.min(durationInSeconds, 5);\n this._timerHandle = setInterval(this._callback, timerDurationInSeconds * 1e3);\n }\n get expiration() {\n return this._expiration;\n }\n cancel() {\n this._logger.create(\"cancel\");\n if (this._timerHandle) {\n clearInterval(this._timerHandle);\n this._timerHandle = null;\n }\n }\n};\n\n// src/utils/UrlUtils.ts\nvar UrlUtils = class {\n static readParams(url, responseMode = \"query\") {\n if (!url) throw new TypeError(\"Invalid URL\");\n const parsedUrl = new URL(url, \"http://127.0.0.1\");\n const params = parsedUrl[responseMode === \"fragment\" ? \"hash\" : \"search\"];\n return new URLSearchParams(params.slice(1));\n }\n};\nvar URL_STATE_DELIMITER = \";\";\n\n// src/errors/ErrorResponse.ts\nvar ErrorResponse = class extends Error {\n constructor(args, form) {\n var _a, _b, _c;\n super(args.error_description || args.error || \"\");\n this.form = form;\n /** Marker to detect class: \"ErrorResponse\" */\n this.name = \"ErrorResponse\";\n if (!args.error) {\n Logger.error(\"ErrorResponse\", \"No error passed\");\n throw new Error(\"No error passed\");\n }\n this.error = args.error;\n this.error_description = (_a = args.error_description) != null ? _a : null;\n this.error_uri = (_b = args.error_uri) != null ? _b : null;\n this.state = args.userState;\n this.session_state = (_c = args.session_state) != null ? _c : null;\n this.url_state = args.url_state;\n }\n};\n\n// src/errors/ErrorTimeout.ts\nvar ErrorTimeout = class extends Error {\n constructor(message) {\n super(message);\n /** Marker to detect class: \"ErrorTimeout\" */\n this.name = \"ErrorTimeout\";\n }\n};\n\n// src/AccessTokenEvents.ts\nvar AccessTokenEvents = class {\n constructor(args) {\n this._logger = new Logger(\"AccessTokenEvents\");\n this._expiringTimer = new Timer(\"Access token expiring\");\n this._expiredTimer = new Timer(\"Access token expired\");\n this._expiringNotificationTimeInSeconds = args.expiringNotificationTimeInSeconds;\n }\n async load(container) {\n const logger2 = this._logger.create(\"load\");\n if (container.access_token && container.expires_in !== void 0) {\n const duration = container.expires_in;\n logger2.debug(\"access token present, remaining duration:\", duration);\n if (duration > 0) {\n let expiring = duration - this._expiringNotificationTimeInSeconds;\n if (expiring <= 0) {\n expiring = 1;\n }\n logger2.debug(\"registering expiring timer, raising in\", expiring, \"seconds\");\n this._expiringTimer.init(expiring);\n } else {\n logger2.debug(\"canceling existing expiring timer because we're past expiration.\");\n this._expiringTimer.cancel();\n }\n const expired = duration + 1;\n logger2.debug(\"registering expired timer, raising in\", expired, \"seconds\");\n this._expiredTimer.init(expired);\n } else {\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n }\n async unload() {\n this._logger.debug(\"unload: canceling existing access token timers\");\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n /**\n * Add callback: Raised prior to the access token expiring.\n */\n addAccessTokenExpiring(cb) {\n return this._expiringTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised prior to the access token expiring.\n */\n removeAccessTokenExpiring(cb) {\n this._expiringTimer.removeHandler(cb);\n }\n /**\n * Add callback: Raised after the access token has expired.\n */\n addAccessTokenExpired(cb) {\n return this._expiredTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised after the access token has expired.\n */\n removeAccessTokenExpired(cb) {\n this._expiredTimer.removeHandler(cb);\n }\n};\n\n// src/CheckSessionIFrame.ts\nvar CheckSessionIFrame = class {\n constructor(_callback, _client_id, url, _intervalInSeconds, _stopOnError) {\n this._callback = _callback;\n this._client_id = _client_id;\n this._intervalInSeconds = _intervalInSeconds;\n this._stopOnError = _stopOnError;\n this._logger = new Logger(\"CheckSessionIFrame\");\n this._timer = null;\n this._session_state = null;\n this._message = (e) => {\n if (e.origin === this._frame_origin && e.source === this._frame.contentWindow) {\n if (e.data === \"error\") {\n this._logger.error(\"error message from check session op iframe\");\n if (this._stopOnError) {\n this.stop();\n }\n } else if (e.data === \"changed\") {\n this._logger.debug(\"changed message from check session op iframe\");\n this.stop();\n void this._callback();\n } else {\n this._logger.debug(e.data + \" message from check session op iframe\");\n }\n }\n };\n const parsedUrl = new URL(url);\n this._frame_origin = parsedUrl.origin;\n this._frame = window.document.createElement(\"iframe\");\n this._frame.style.visibility = \"hidden\";\n this._frame.style.position = \"fixed\";\n this._frame.style.left = \"-1000px\";\n this._frame.style.top = \"0\";\n this._frame.width = \"0\";\n this._frame.height = \"0\";\n this._frame.src = parsedUrl.href;\n }\n load() {\n return new Promise((resolve) => {\n this._frame.onload = () => {\n resolve();\n };\n window.document.body.appendChild(this._frame);\n window.addEventListener(\"message\", this._message, false);\n });\n }\n start(session_state) {\n if (this._session_state === session_state) {\n return;\n }\n this._logger.create(\"start\");\n this.stop();\n this._session_state = session_state;\n const send = () => {\n if (!this._frame.contentWindow || !this._session_state) {\n return;\n }\n this._frame.contentWindow.postMessage(this._client_id + \" \" + this._session_state, this._frame_origin);\n };\n send();\n this._timer = setInterval(send, this._intervalInSeconds * 1e3);\n }\n stop() {\n this._logger.create(\"stop\");\n this._session_state = null;\n if (this._timer) {\n clearInterval(this._timer);\n this._timer = null;\n }\n }\n};\n\n// src/InMemoryWebStorage.ts\nvar InMemoryWebStorage = class {\n constructor() {\n this._logger = new Logger(\"InMemoryWebStorage\");\n this._data = {};\n }\n clear() {\n this._logger.create(\"clear\");\n this._data = {};\n }\n getItem(key) {\n this._logger.create(`getItem('${key}')`);\n return this._data[key];\n }\n setItem(key, value) {\n this._logger.create(`setItem('${key}')`);\n this._data[key] = value;\n }\n removeItem(key) {\n this._logger.create(`removeItem('${key}')`);\n delete this._data[key];\n }\n get length() {\n return Object.getOwnPropertyNames(this._data).length;\n }\n key(index) {\n return Object.getOwnPropertyNames(this._data)[index];\n }\n};\n\n// src/errors/ErrorDPoPNonce.ts\nvar ErrorDPoPNonce = class extends Error {\n constructor(nonce, message) {\n super(message);\n /** Marker to detect class: \"ErrorDPoPNonce\" */\n this.name = \"ErrorDPoPNonce\";\n this.nonce = nonce;\n }\n};\n\n// src/JsonService.ts\nvar JsonService = class {\n constructor(additionalContentTypes = [], _jwtHandler = null, _extraHeaders = {}) {\n this._jwtHandler = _jwtHandler;\n this._extraHeaders = _extraHeaders;\n this._logger = new Logger(\"JsonService\");\n this._contentTypes = [];\n this._contentTypes.push(...additionalContentTypes, \"application/json\");\n if (_jwtHandler) {\n this._contentTypes.push(\"application/jwt\");\n }\n }\n async fetchWithTimeout(input, init = {}) {\n const { timeoutInSeconds, ...initFetch } = init;\n if (!timeoutInSeconds) {\n return await fetch(input, initFetch);\n }\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutInSeconds * 1e3);\n try {\n const response = await fetch(input, {\n ...init,\n signal: controller.signal\n });\n return response;\n } catch (err) {\n if (err instanceof DOMException && err.name === \"AbortError\") {\n throw new ErrorTimeout(\"Network timed out\");\n }\n throw err;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n async getJson(url, {\n token,\n credentials,\n timeoutInSeconds\n } = {}) {\n const logger2 = this._logger.create(\"getJson\");\n const headers = {\n \"Accept\": this._contentTypes.join(\", \")\n };\n if (token) {\n logger2.debug(\"token passed, setting Authorization header\");\n headers[\"Authorization\"] = \"Bearer \" + token;\n }\n this._appendExtraHeaders(headers);\n let response;\n try {\n logger2.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"GET\", headers, timeoutInSeconds, credentials });\n } catch (err) {\n logger2.error(\"Network Error\");\n throw err;\n }\n logger2.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find((item) => contentType.startsWith(item))) {\n logger2.throw(new Error(`Invalid response Content-Type: ${contentType != null ? contentType : \"undefined\"}, from URL: ${url}`));\n }\n if (response.ok && this._jwtHandler && (contentType == null ? void 0 : contentType.startsWith(\"application/jwt\"))) {\n return await this._jwtHandler(await response.text());\n }\n let json;\n try {\n json = await response.json();\n } catch (err) {\n logger2.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n if (!response.ok) {\n logger2.error(\"Error from server:\", json);\n if (json.error) {\n throw new ErrorResponse(json);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n return json;\n }\n async postForm(url, {\n body,\n basicAuth,\n timeoutInSeconds,\n initCredentials,\n extraHeaders\n }) {\n const logger2 = this._logger.create(\"postForm\");\n const headers = {\n \"Accept\": this._contentTypes.join(\", \"),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n ...extraHeaders\n };\n if (basicAuth !== void 0) {\n headers[\"Authorization\"] = \"Basic \" + basicAuth;\n }\n this._appendExtraHeaders(headers);\n let response;\n try {\n logger2.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"POST\", headers, body, timeoutInSeconds, credentials: initCredentials });\n } catch (err) {\n logger2.error(\"Network error\");\n throw err;\n }\n logger2.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find((item) => contentType.startsWith(item))) {\n throw new Error(`Invalid response Content-Type: ${contentType != null ? contentType : \"undefined\"}, from URL: ${url}`);\n }\n const responseText = await response.text();\n let json = {};\n if (responseText) {\n try {\n json = JSON.parse(responseText);\n } catch (err) {\n logger2.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n }\n if (!response.ok) {\n logger2.error(\"Error from server:\", json);\n if (response.headers.has(\"dpop-nonce\")) {\n const nonce = response.headers.get(\"dpop-nonce\");\n throw new ErrorDPoPNonce(nonce, `${JSON.stringify(json)}`);\n }\n if (json.error) {\n throw new ErrorResponse(json, body);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n return json;\n }\n _appendExtraHeaders(headers) {\n const logger2 = this._logger.create(\"appendExtraHeaders\");\n const customKeys = Object.keys(this._extraHeaders);\n const protectedHeaders = [\n \"accept\",\n \"content-type\"\n ];\n const preventOverride = [\n \"authorization\"\n ];\n if (customKeys.length === 0) {\n return;\n }\n customKeys.forEach((headerName) => {\n if (protectedHeaders.includes(headerName.toLocaleLowerCase())) {\n logger2.warn(\"Protected header could not be set\", headerName, protectedHeaders);\n return;\n }\n if (preventOverride.includes(headerName.toLocaleLowerCase()) && Object.keys(headers).includes(headerName)) {\n logger2.warn(\"Header could not be overridden\", headerName, preventOverride);\n return;\n }\n const content = typeof this._extraHeaders[headerName] === \"function\" ? this._extraHeaders[headerName]() : this._extraHeaders[headerName];\n if (content && content !== \"\") {\n headers[headerName] = content;\n }\n });\n }\n};\n\n// src/MetadataService.ts\nvar MetadataService = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"MetadataService\");\n this._signingKeys = null;\n this._metadata = null;\n this._metadataUrl = this._settings.metadataUrl;\n this._jsonService = new JsonService(\n [\"application/jwk-set+json\"],\n null,\n this._settings.extraHeaders\n );\n if (this._settings.signingKeys) {\n this._logger.debug(\"using signingKeys from settings\");\n this._signingKeys = this._settings.signingKeys;\n }\n if (this._settings.metadata) {\n this._logger.debug(\"using metadata from settings\");\n this._metadata = this._settings.metadata;\n }\n if (this._settings.fetchRequestCredentials) {\n this._logger.debug(\"using fetchRequestCredentials from settings\");\n this._fetchRequestCredentials = this._settings.fetchRequestCredentials;\n }\n }\n resetSigningKeys() {\n this._signingKeys = null;\n }\n async getMetadata() {\n const logger2 = this._logger.create(\"getMetadata\");\n if (this._metadata) {\n logger2.debug(\"using cached values\");\n return this._metadata;\n }\n if (!this._metadataUrl) {\n logger2.throw(new Error(\"No authority or metadataUrl configured on settings\"));\n throw null;\n }\n logger2.debug(\"getting metadata from\", this._metadataUrl);\n const metadata = await this._jsonService.getJson(this._metadataUrl, { credentials: this._fetchRequestCredentials, timeoutInSeconds: this._settings.requestTimeoutInSeconds });\n logger2.debug(\"merging remote JSON with seed metadata\");\n this._metadata = Object.assign({}, metadata, this._settings.metadataSeed);\n return this._metadata;\n }\n getIssuer() {\n return this._getMetadataProperty(\"issuer\");\n }\n getAuthorizationEndpoint() {\n return this._getMetadataProperty(\"authorization_endpoint\");\n }\n getUserInfoEndpoint() {\n return this._getMetadataProperty(\"userinfo_endpoint\");\n }\n getTokenEndpoint(optional = true) {\n return this._getMetadataProperty(\"token_endpoint\", optional);\n }\n getCheckSessionIframe() {\n return this._getMetadataProperty(\"check_session_iframe\", true);\n }\n getEndSessionEndpoint() {\n return this._getMetadataProperty(\"end_session_endpoint\", true);\n }\n getRevocationEndpoint(optional = true) {\n return this._getMetadataProperty(\"revocation_endpoint\", optional);\n }\n getKeysEndpoint(optional = true) {\n return this._getMetadataProperty(\"jwks_uri\", optional);\n }\n async _getMetadataProperty(name, optional = false) {\n const logger2 = this._logger.create(`_getMetadataProperty('${name}')`);\n const metadata = await this.getMetadata();\n logger2.debug(\"resolved\");\n if (metadata[name] === void 0) {\n if (optional === true) {\n logger2.warn(\"Metadata does not contain optional property\");\n return void 0;\n }\n logger2.throw(new Error(\"Metadata does not contain property \" + name));\n }\n return metadata[name];\n }\n async getSigningKeys() {\n const logger2 = this._logger.create(\"getSigningKeys\");\n if (this._signingKeys) {\n logger2.debug(\"returning signingKeys from cache\");\n return this._signingKeys;\n }\n const jwks_uri = await this.getKeysEndpoint(false);\n logger2.debug(\"got jwks_uri\", jwks_uri);\n const keySet = await this._jsonService.getJson(jwks_uri, { timeoutInSeconds: this._settings.requestTimeoutInSeconds });\n logger2.debug(\"got key set\", keySet);\n if (!Array.isArray(keySet.keys)) {\n logger2.throw(new Error(\"Missing keys on keyset\"));\n throw null;\n }\n this._signingKeys = keySet.keys;\n return this._signingKeys;\n }\n};\n\n// src/WebStorageStateStore.ts\nvar WebStorageStateStore = class {\n constructor({\n prefix = \"oidc.\",\n store = localStorage\n } = {}) {\n this._logger = new Logger(\"WebStorageStateStore\");\n this._store = store;\n this._prefix = prefix;\n }\n async set(key, value) {\n this._logger.create(`set('${key}')`);\n key = this._prefix + key;\n await this._store.setItem(key, value);\n }\n async get(key) {\n this._logger.create(`get('${key}')`);\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n return item;\n }\n async remove(key) {\n this._logger.create(`remove('${key}')`);\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n await this._store.removeItem(key);\n return item;\n }\n async getAllKeys() {\n this._logger.create(\"getAllKeys\");\n const len = await this._store.length;\n const keys = [];\n for (let index = 0; index < len; index++) {\n const key = await this._store.key(index);\n if (key && key.indexOf(this._prefix) === 0) {\n keys.push(key.substr(this._prefix.length));\n }\n }\n return keys;\n }\n};\n\n// src/OidcClientSettings.ts\nvar DefaultResponseType = \"code\";\nvar DefaultScope = \"openid\";\nvar DefaultClientAuthentication = \"client_secret_post\";\nvar DefaultStaleStateAgeInSeconds = 60 * 15;\nvar OidcClientSettingsStore = class {\n constructor({\n // metadata related\n authority,\n metadataUrl,\n metadata,\n signingKeys,\n metadataSeed,\n // client related\n client_id,\n client_secret,\n response_type = DefaultResponseType,\n scope = DefaultScope,\n redirect_uri,\n post_logout_redirect_uri,\n client_authentication = DefaultClientAuthentication,\n token_endpoint_auth_signing_alg = \"HS256\",\n // optional protocol\n prompt,\n display,\n max_age,\n ui_locales,\n acr_values,\n resource,\n response_mode,\n // behavior flags\n filterProtocolClaims = true,\n loadUserInfo = false,\n requestTimeoutInSeconds,\n staleStateAgeInSeconds = DefaultStaleStateAgeInSeconds,\n mergeClaimsStrategy = { array: \"replace\" },\n disablePKCE = false,\n // other behavior\n stateStore,\n revokeTokenAdditionalContentTypes,\n fetchRequestCredentials,\n refreshTokenAllowedScope,\n // extra\n extraQueryParams = {},\n extraTokenParams = {},\n extraHeaders = {},\n dpop,\n omitScopeWhenRequesting = false\n }) {\n var _a;\n this.authority = authority;\n if (metadataUrl) {\n this.metadataUrl = metadataUrl;\n } else {\n this.metadataUrl = authority;\n if (authority) {\n if (!this.metadataUrl.endsWith(\"/\")) {\n this.metadataUrl += \"/\";\n }\n this.metadataUrl += \".well-known/openid-configuration\";\n }\n }\n this.metadata = metadata;\n this.metadataSeed = metadataSeed;\n this.signingKeys = signingKeys;\n this.client_id = client_id;\n this.client_secret = client_secret;\n this.response_type = response_type;\n this.scope = scope;\n this.redirect_uri = redirect_uri;\n this.post_logout_redirect_uri = post_logout_redirect_uri;\n this.client_authentication = client_authentication;\n this.token_endpoint_auth_signing_alg = token_endpoint_auth_signing_alg;\n this.prompt = prompt;\n this.display = display;\n this.max_age = max_age;\n this.ui_locales = ui_locales;\n this.acr_values = acr_values;\n this.resource = resource;\n this.response_mode = response_mode;\n this.filterProtocolClaims = filterProtocolClaims != null ? filterProtocolClaims : true;\n this.loadUserInfo = !!loadUserInfo;\n this.staleStateAgeInSeconds = staleStateAgeInSeconds;\n this.mergeClaimsStrategy = mergeClaimsStrategy;\n this.omitScopeWhenRequesting = omitScopeWhenRequesting;\n this.disablePKCE = !!disablePKCE;\n this.revokeTokenAdditionalContentTypes = revokeTokenAdditionalContentTypes;\n this.fetchRequestCredentials = fetchRequestCredentials ? fetchRequestCredentials : \"same-origin\";\n this.requestTimeoutInSeconds = requestTimeoutInSeconds;\n if (stateStore) {\n this.stateStore = stateStore;\n } else {\n const store = typeof window !== \"undefined\" ? window.localStorage : new InMemoryWebStorage();\n this.stateStore = new WebStorageStateStore({ store });\n }\n this.refreshTokenAllowedScope = refreshTokenAllowedScope;\n this.extraQueryParams = extraQueryParams;\n this.extraTokenParams = extraTokenParams;\n this.extraHeaders = extraHeaders;\n this.dpop = dpop;\n if (this.dpop && !((_a = this.dpop) == null ? void 0 : _a.store)) {\n throw new Error(\"A DPoPStore is required when dpop is enabled\");\n }\n }\n};\n\n// src/UserInfoService.ts\nvar UserInfoService = class {\n constructor(_settings, _metadataService) {\n this._settings = _settings;\n this._metadataService = _metadataService;\n this._logger = new Logger(\"UserInfoService\");\n this._getClaimsFromJwt = async (responseText) => {\n const logger2 = this._logger.create(\"_getClaimsFromJwt\");\n try {\n const payload = JwtUtils.decode(responseText);\n logger2.debug(\"JWT decoding successful\");\n return payload;\n } catch (err) {\n logger2.error(\"Error parsing JWT response\");\n throw err;\n }\n };\n this._jsonService = new JsonService(\n void 0,\n this._getClaimsFromJwt,\n this._settings.extraHeaders\n );\n }\n async getClaims(token) {\n const logger2 = this._logger.create(\"getClaims\");\n if (!token) {\n this._logger.throw(new Error(\"No token passed\"));\n }\n const url = await this._metadataService.getUserInfoEndpoint();\n logger2.debug(\"got userinfo url\", url);\n const claims = await this._jsonService.getJson(url, {\n token,\n credentials: this._settings.fetchRequestCredentials,\n timeoutInSeconds: this._settings.requestTimeoutInSeconds\n });\n logger2.debug(\"got claims\", claims);\n return claims;\n }\n};\n\n// src/TokenClient.ts\nvar TokenClient = class {\n constructor(_settings, _metadataService) {\n this._settings = _settings;\n this._metadataService = _metadataService;\n this._logger = new Logger(\"TokenClient\");\n this._jsonService = new JsonService(\n this._settings.revokeTokenAdditionalContentTypes,\n null,\n this._settings.extraHeaders\n );\n }\n /**\n * Exchange code.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3\n */\n async exchangeCode({\n grant_type = \"authorization_code\",\n redirect_uri = this._settings.redirect_uri,\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n extraHeaders,\n ...args\n }) {\n const logger2 = this._logger.create(\"exchangeCode\");\n if (!client_id) {\n logger2.throw(new Error(\"A client_id is required\"));\n }\n if (!redirect_uri) {\n logger2.throw(new Error(\"A redirect_uri is required\"));\n }\n if (!args.code) {\n logger2.throw(new Error(\"A code is required\"));\n }\n const params = new URLSearchParams({ grant_type, redirect_uri });\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n if ((this._settings.client_authentication === \"client_secret_basic\" || this._settings.client_authentication === \"client_secret_jwt\") && (client_secret === void 0 || client_secret === null)) {\n logger2.throw(new Error(\"A client_secret is required\"));\n throw null;\n }\n let basicAuth;\n const url = await this._metadataService.getTokenEndpoint(false);\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n case \"client_secret_jwt\": {\n const clientAssertion = await CryptoUtils.generateClientAssertionJwt(client_id, client_secret, url, this._settings.token_endpoint_auth_signing_alg);\n params.append(\"client_id\", client_id);\n params.append(\"client_assertion_type\", \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\n params.append(\"client_assertion\", clientAssertion);\n break;\n }\n }\n logger2.debug(\"got token endpoint\");\n const response = await this._jsonService.postForm(url, {\n body: params,\n basicAuth,\n timeoutInSeconds: this._settings.requestTimeoutInSeconds,\n initCredentials: this._settings.fetchRequestCredentials,\n extraHeaders\n });\n logger2.debug(\"got response\");\n return response;\n }\n /**\n * Exchange credentials.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.3.2\n */\n async exchangeCredentials({\n grant_type = \"password\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n scope = this._settings.scope,\n ...args\n }) {\n const logger2 = this._logger.create(\"exchangeCredentials\");\n if (!client_id) {\n logger2.throw(new Error(\"A client_id is required\"));\n }\n const params = new URLSearchParams({ grant_type });\n if (!this._settings.omitScopeWhenRequesting) {\n params.set(\"scope\", scope);\n }\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n if ((this._settings.client_authentication === \"client_secret_basic\" || this._settings.client_authentication === \"client_secret_jwt\") && (client_secret === void 0 || client_secret === null)) {\n logger2.throw(new Error(\"A client_secret is required\"));\n throw null;\n }\n let basicAuth;\n const url = await this._metadataService.getTokenEndpoint(false);\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n case \"client_secret_jwt\": {\n const clientAssertion = await CryptoUtils.generateClientAssertionJwt(client_id, client_secret, url, this._settings.token_endpoint_auth_signing_alg);\n params.append(\"client_id\", client_id);\n params.append(\"client_assertion_type\", \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\n params.append(\"client_assertion\", clientAssertion);\n break;\n }\n }\n logger2.debug(\"got token endpoint\");\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, timeoutInSeconds: this._settings.requestTimeoutInSeconds, initCredentials: this._settings.fetchRequestCredentials });\n logger2.debug(\"got response\");\n return response;\n }\n /**\n * Exchange a refresh token.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-6\n */\n async exchangeRefreshToken({\n grant_type = \"refresh_token\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n timeoutInSeconds,\n extraHeaders,\n ...args\n }) {\n const logger2 = this._logger.create(\"exchangeRefreshToken\");\n if (!client_id) {\n logger2.throw(new Error(\"A client_id is required\"));\n }\n if (!args.refresh_token) {\n logger2.throw(new Error(\"A refresh_token is required\"));\n }\n const params = new URLSearchParams({ grant_type });\n for (const [key, value] of Object.entries(args)) {\n if (Array.isArray(value)) {\n value.forEach((param) => params.append(key, param));\n } else if (value != null) {\n params.set(key, value);\n }\n }\n if ((this._settings.client_authentication === \"client_secret_basic\" || this._settings.client_authentication === \"client_secret_jwt\") && (client_secret === void 0 || client_secret === null)) {\n logger2.throw(new Error(\"A client_secret is required\"));\n throw null;\n }\n let basicAuth;\n const url = await this._metadataService.getTokenEndpoint(false);\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n case \"client_secret_jwt\": {\n const clientAssertion = await CryptoUtils.generateClientAssertionJwt(client_id, client_secret, url, this._settings.token_endpoint_auth_signing_alg);\n params.append(\"client_id\", client_id);\n params.append(\"client_assertion_type\", \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\n params.append(\"client_assertion\", clientAssertion);\n break;\n }\n }\n logger2.debug(\"got token endpoint\");\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, timeoutInSeconds, initCredentials: this._settings.fetchRequestCredentials, extraHeaders });\n logger2.debug(\"got response\");\n return response;\n }\n /**\n * Revoke an access or refresh token.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc7009#section-2.1\n */\n async revoke(args) {\n var _a;\n const logger2 = this._logger.create(\"revoke\");\n if (!args.token) {\n logger2.throw(new Error(\"A token is required\"));\n }\n const url = await this._metadataService.getRevocationEndpoint(false);\n logger2.debug(`got revocation endpoint, revoking ${(_a = args.token_type_hint) != null ? _a : \"default token type\"}`);\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n params.set(\"client_id\", this._settings.client_id);\n if (this._settings.client_secret) {\n params.set(\"client_secret\", this._settings.client_secret);\n }\n await this._jsonService.postForm(url, { body: params, timeoutInSeconds: this._settings.requestTimeoutInSeconds });\n logger2.debug(\"got response\");\n }\n};\n\n// src/ResponseValidator.ts\nvar ResponseValidator = class {\n constructor(_settings, _metadataService, _claimsService) {\n this._settings = _settings;\n this._metadataService = _metadataService;\n this._claimsService = _claimsService;\n this._logger = new Logger(\"ResponseValidator\");\n this._userInfoService = new UserInfoService(this._settings, this._metadataService);\n this._tokenClient = new TokenClient(this._settings, this._metadataService);\n }\n async validateSigninResponse(response, state, extraHeaders) {\n const logger2 = this._logger.create(\"validateSigninResponse\");\n this._processSigninState(response, state);\n logger2.debug(\"state processed\");\n await this._processCode(response, state, extraHeaders);\n logger2.debug(\"code processed\");\n if (response.isOpenId) {\n this._validateIdTokenAttributes(response);\n }\n logger2.debug(\"tokens validated\");\n await this._processClaims(response, state == null ? void 0 : state.skipUserInfo, response.isOpenId);\n logger2.debug(\"claims processed\");\n }\n async validateCredentialsResponse(response, skipUserInfo) {\n const logger2 = this._logger.create(\"validateCredentialsResponse\");\n const shouldValidateSubClaim = response.isOpenId && !!response.id_token;\n if (shouldValidateSubClaim) {\n this._validateIdTokenAttributes(response);\n }\n logger2.debug(\"tokens validated\");\n await this._processClaims(response, skipUserInfo, shouldValidateSubClaim);\n logger2.debug(\"claims processed\");\n }\n async validateRefreshResponse(response, state) {\n var _a, _b;\n const logger2 = this._logger.create(\"validateRefreshResponse\");\n response.userState = state.data;\n (_a = response.session_state) != null ? _a : response.session_state = state.session_state;\n (_b = response.scope) != null ? _b : response.scope = state.scope;\n if (response.isOpenId && !!response.id_token) {\n this._validateIdTokenAttributes(response, state.id_token);\n logger2.debug(\"ID Token validated\");\n }\n if (!response.id_token) {\n response.id_token = state.id_token;\n response.profile = state.profile;\n }\n const hasIdToken = response.isOpenId && !!response.id_token;\n await this._processClaims(response, false, hasIdToken);\n logger2.debug(\"claims processed\");\n }\n validateSignoutResponse(response, state) {\n const logger2 = this._logger.create(\"validateSignoutResponse\");\n if (state.id !== response.state) {\n logger2.throw(new Error(\"State does not match\"));\n }\n logger2.debug(\"state validated\");\n response.userState = state.data;\n if (response.error) {\n logger2.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n }\n _processSigninState(response, state) {\n var _a;\n const logger2 = this._logger.create(\"_processSigninState\");\n if (state.id !== response.state) {\n logger2.throw(new Error(\"State does not match\"));\n }\n if (!state.client_id) {\n logger2.throw(new Error(\"No client_id on state\"));\n }\n if (!state.authority) {\n logger2.throw(new Error(\"No authority on state\"));\n }\n if (this._settings.authority !== state.authority) {\n logger2.throw(new Error(\"authority mismatch on settings vs. signin state\"));\n }\n if (this._settings.client_id && this._settings.client_id !== state.client_id) {\n logger2.throw(new Error(\"client_id mismatch on settings vs. signin state\"));\n }\n logger2.debug(\"state validated\");\n response.userState = state.data;\n response.url_state = state.url_state;\n (_a = response.scope) != null ? _a : response.scope = state.scope;\n if (response.error) {\n logger2.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n if (state.code_verifier && !response.code) {\n logger2.throw(new Error(\"Expected code in response\"));\n }\n }\n async _processClaims(response, skipUserInfo = false, validateSub = true) {\n const logger2 = this._logger.create(\"_processClaims\");\n response.profile = this._claimsService.filterProtocolClaims(response.profile);\n if (skipUserInfo || !this._settings.loadUserInfo || !response.access_token) {\n logger2.debug(\"not loading user info\");\n return;\n }\n logger2.debug(\"loading user info\");\n const claims = await this._userInfoService.getClaims(response.access_token);\n logger2.debug(\"user info claims received from user info endpoint\");\n if (validateSub && claims.sub !== response.profile.sub) {\n logger2.throw(new Error(\"subject from UserInfo response does not match subject in ID Token\"));\n }\n response.profile = this._claimsService.mergeClaims(response.profile, this._claimsService.filterProtocolClaims(claims));\n logger2.debug(\"user info claims received, updated profile:\", response.profile);\n }\n async _processCode(response, state, extraHeaders) {\n const logger2 = this._logger.create(\"_processCode\");\n if (response.code) {\n logger2.debug(\"Validating code\");\n const tokenResponse = await this._tokenClient.exchangeCode({\n client_id: state.client_id,\n client_secret: state.client_secret,\n code: response.code,\n redirect_uri: state.redirect_uri,\n code_verifier: state.code_verifier,\n extraHeaders,\n ...state.extraTokenParams\n });\n Object.assign(response, tokenResponse);\n } else {\n logger2.debug(\"No code to process\");\n }\n }\n _validateIdTokenAttributes(response, existingToken) {\n var _a;\n const logger2 = this._logger.create(\"_validateIdTokenAttributes\");\n logger2.debug(\"decoding ID Token JWT\");\n const incoming = JwtUtils.decode((_a = response.id_token) != null ? _a : \"\");\n if (!incoming.sub) {\n logger2.throw(new Error(\"ID Token is missing a subject claim\"));\n }\n if (existingToken) {\n const existing = JwtUtils.decode(existingToken);\n if (incoming.sub !== existing.sub) {\n logger2.throw(new Error(\"sub in id_token does not match current sub\"));\n }\n if (incoming.auth_time && incoming.auth_time !== existing.auth_time) {\n logger2.throw(new Error(\"auth_time in id_token does not match original auth_time\"));\n }\n if (incoming.azp && incoming.azp !== existing.azp) {\n logger2.throw(new Error(\"azp in id_token does not match original azp\"));\n }\n if (!incoming.azp && existing.azp) {\n logger2.throw(new Error(\"azp not in id_token, but present in original id_token\"));\n }\n }\n response.profile = incoming;\n }\n};\n\n// src/State.ts\nvar State = class _State {\n constructor(args) {\n this.id = args.id || CryptoUtils.generateUUIDv4();\n this.data = args.data;\n if (args.created && args.created > 0) {\n this.created = args.created;\n } else {\n this.created = Timer.getEpochTime();\n }\n this.request_type = args.request_type;\n this.url_state = args.url_state;\n }\n toStorageString() {\n new Logger(\"State\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state\n });\n }\n static fromStorageString(storageString) {\n Logger.createStatic(\"State\", \"fromStorageString\");\n return Promise.resolve(new _State(JSON.parse(storageString)));\n }\n static async clearStaleState(storage, age) {\n const logger2 = Logger.createStatic(\"State\", \"clearStaleState\");\n const cutoff = Timer.getEpochTime() - age;\n const keys = await storage.getAllKeys();\n logger2.debug(\"got keys\", keys);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const item = await storage.get(key);\n let remove = false;\n if (item) {\n try {\n const state = await _State.fromStorageString(item);\n logger2.debug(\"got item from key:\", key, state.created);\n if (state.created <= cutoff) {\n remove = true;\n }\n } catch (err) {\n logger2.error(\"Error parsing state for key:\", key, err);\n remove = true;\n }\n } else {\n logger2.debug(\"no item in storage for key:\", key);\n remove = true;\n }\n if (remove) {\n logger2.debug(\"removed item for key:\", key);\n void storage.remove(key);\n }\n }\n }\n};\n\n// src/SigninState.ts\nvar SigninState = class _SigninState extends State {\n constructor(args) {\n super(args);\n this.code_verifier = args.code_verifier;\n this.code_challenge = args.code_challenge;\n this.authority = args.authority;\n this.client_id = args.client_id;\n this.redirect_uri = args.redirect_uri;\n this.scope = args.scope;\n this.client_secret = args.client_secret;\n this.extraTokenParams = args.extraTokenParams;\n this.response_mode = args.response_mode;\n this.skipUserInfo = args.skipUserInfo;\n }\n static async create(args) {\n const code_verifier = args.code_verifier === true ? CryptoUtils.generateCodeVerifier() : args.code_verifier || void 0;\n const code_challenge = code_verifier ? await CryptoUtils.generateCodeChallenge(code_verifier) : void 0;\n return new _SigninState({\n ...args,\n code_verifier,\n code_challenge\n });\n }\n toStorageString() {\n new Logger(\"SigninState\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state,\n code_verifier: this.code_verifier,\n authority: this.authority,\n client_id: this.client_id,\n redirect_uri: this.redirect_uri,\n scope: this.scope,\n client_secret: this.client_secret,\n extraTokenParams: this.extraTokenParams,\n response_mode: this.response_mode,\n skipUserInfo: this.skipUserInfo\n });\n }\n static fromStorageString(storageString) {\n Logger.createStatic(\"SigninState\", \"fromStorageString\");\n const data = JSON.parse(storageString);\n return _SigninState.create(data);\n }\n};\n\n// src/SigninRequest.ts\nvar _SigninRequest = class _SigninRequest {\n constructor(args) {\n this.url = args.url;\n this.state = args.state;\n }\n static async create({\n // mandatory\n url,\n authority,\n client_id,\n redirect_uri,\n response_type,\n scope,\n // optional\n state_data,\n response_mode,\n request_type,\n client_secret,\n nonce,\n url_state,\n resource,\n skipUserInfo,\n extraQueryParams,\n extraTokenParams,\n disablePKCE,\n dpopJkt,\n omitScopeWhenRequesting,\n ...optionalParams\n }) {\n if (!url) {\n this._logger.error(\"create: No url passed\");\n throw new Error(\"url\");\n }\n if (!client_id) {\n this._logger.error(\"create: No client_id passed\");\n throw new Error(\"client_id\");\n }\n if (!redirect_uri) {\n this._logger.error(\"create: No redirect_uri passed\");\n throw new Error(\"redirect_uri\");\n }\n if (!response_type) {\n this._logger.error(\"create: No response_type passed\");\n throw new Error(\"response_type\");\n }\n if (!scope) {\n this._logger.error(\"create: No scope passed\");\n throw new Error(\"scope\");\n }\n if (!authority) {\n this._logger.error(\"create: No authority passed\");\n throw new Error(\"authority\");\n }\n const state = await SigninState.create({\n data: state_data,\n request_type,\n url_state,\n code_verifier: !disablePKCE,\n client_id,\n authority,\n redirect_uri,\n response_mode,\n client_secret,\n scope,\n extraTokenParams,\n skipUserInfo\n });\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.append(\"client_id\", client_id);\n parsedUrl.searchParams.append(\"redirect_uri\", redirect_uri);\n parsedUrl.searchParams.append(\"response_type\", response_type);\n if (!omitScopeWhenRequesting) {\n parsedUrl.searchParams.append(\"scope\", scope);\n }\n if (nonce) {\n parsedUrl.searchParams.append(\"nonce\", nonce);\n }\n if (dpopJkt) {\n parsedUrl.searchParams.append(\"dpop_jkt\", dpopJkt);\n }\n let stateParam = state.id;\n if (url_state) {\n stateParam = `${stateParam}${URL_STATE_DELIMITER}${url_state}`;\n }\n parsedUrl.searchParams.append(\"state\", stateParam);\n if (state.code_challenge) {\n parsedUrl.searchParams.append(\"code_challenge\", state.code_challenge);\n parsedUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n }\n if (resource) {\n const resources = Array.isArray(resource) ? resource : [resource];\n resources.forEach((r) => parsedUrl.searchParams.append(\"resource\", r));\n }\n for (const [key, value] of Object.entries({ response_mode, ...optionalParams, ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n return new _SigninRequest({\n url: parsedUrl.href,\n state\n });\n }\n};\n_SigninRequest._logger = new Logger(\"SigninRequest\");\nvar SigninRequest = _SigninRequest;\n\n// src/SigninResponse.ts\nvar OidcScope = \"openid\";\nvar SigninResponse = class {\n constructor(params) {\n /** @see {@link User.access_token} */\n this.access_token = \"\";\n /** @see {@link User.token_type} */\n this.token_type = \"\";\n /** @see {@link User.profile} */\n this.profile = {};\n this.state = params.get(\"state\");\n this.session_state = params.get(\"session_state\");\n if (this.state) {\n const splitState = decodeURIComponent(this.state).split(URL_STATE_DELIMITER);\n this.state = splitState[0];\n if (splitState.length > 1) {\n this.url_state = splitState.slice(1).join(URL_STATE_DELIMITER);\n }\n }\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n this.code = params.get(\"code\");\n }\n get expires_in() {\n if (this.expires_at === void 0) {\n return void 0;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n set expires_in(value) {\n if (typeof value === \"string\") value = Number(value);\n if (value !== void 0 && value >= 0) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n get isOpenId() {\n var _a;\n return ((_a = this.scope) == null ? void 0 : _a.split(\" \").includes(OidcScope)) || !!this.id_token;\n }\n};\n\n// src/SignoutRequest.ts\nvar SignoutRequest = class {\n constructor({\n url,\n state_data,\n id_token_hint,\n post_logout_redirect_uri,\n extraQueryParams,\n request_type,\n client_id,\n url_state\n }) {\n this._logger = new Logger(\"SignoutRequest\");\n if (!url) {\n this._logger.error(\"ctor: No url passed\");\n throw new Error(\"url\");\n }\n const parsedUrl = new URL(url);\n if (id_token_hint) {\n parsedUrl.searchParams.append(\"id_token_hint\", id_token_hint);\n }\n if (client_id) {\n parsedUrl.searchParams.append(\"client_id\", client_id);\n }\n if (post_logout_redirect_uri) {\n parsedUrl.searchParams.append(\"post_logout_redirect_uri\", post_logout_redirect_uri);\n if (state_data || url_state) {\n this.state = new State({ data: state_data, request_type, url_state });\n let stateParam = this.state.id;\n if (url_state) {\n stateParam = `${stateParam}${URL_STATE_DELIMITER}${url_state}`;\n }\n parsedUrl.searchParams.append(\"state\", stateParam);\n }\n }\n for (const [key, value] of Object.entries({ ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n this.url = parsedUrl.href;\n }\n};\n\n// src/SignoutResponse.ts\nvar SignoutResponse = class {\n constructor(params) {\n this.state = params.get(\"state\");\n if (this.state) {\n const splitState = decodeURIComponent(this.state).split(URL_STATE_DELIMITER);\n this.state = splitState[0];\n if (splitState.length > 1) {\n this.url_state = splitState.slice(1).join(URL_STATE_DELIMITER);\n }\n }\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n }\n};\n\n// src/ClaimsService.ts\nvar DefaultProtocolClaims = [\n \"nbf\",\n \"jti\",\n \"auth_time\",\n \"nonce\",\n \"acr\",\n \"amr\",\n \"azp\",\n \"at_hash\"\n // https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken\n];\nvar InternalRequiredProtocolClaims = [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\"];\nvar ClaimsService = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"ClaimsService\");\n }\n filterProtocolClaims(claims) {\n const result = { ...claims };\n if (this._settings.filterProtocolClaims) {\n let protocolClaims;\n if (Array.isArray(this._settings.filterProtocolClaims)) {\n protocolClaims = this._settings.filterProtocolClaims;\n } else {\n protocolClaims = DefaultProtocolClaims;\n }\n for (const claim of protocolClaims) {\n if (!InternalRequiredProtocolClaims.includes(claim)) {\n delete result[claim];\n }\n }\n }\n return result;\n }\n mergeClaims(claims1, claims2) {\n const result = { ...claims1 };\n for (const [claim, values] of Object.entries(claims2)) {\n if (result[claim] !== values) {\n if (Array.isArray(result[claim]) || Array.isArray(values)) {\n if (this._settings.mergeClaimsStrategy.array == \"replace\") {\n result[claim] = values;\n } else {\n const mergedValues = Array.isArray(result[claim]) ? result[claim] : [result[claim]];\n for (const value of Array.isArray(values) ? values : [values]) {\n if (!mergedValues.includes(value)) {\n mergedValues.push(value);\n }\n }\n result[claim] = mergedValues;\n }\n } else if (typeof result[claim] === \"object\" && typeof values === \"object\") {\n result[claim] = this.mergeClaims(result[claim], values);\n } else {\n result[claim] = values;\n }\n }\n }\n return result;\n }\n};\n\n// src/DPoPStore.ts\nvar DPoPState = class {\n constructor(keys, nonce) {\n this.keys = keys;\n this.nonce = nonce;\n }\n};\n\n// src/OidcClient.ts\nvar OidcClient = class {\n constructor(settings, metadataService) {\n this._logger = new Logger(\"OidcClient\");\n this.settings = settings instanceof OidcClientSettingsStore ? settings : new OidcClientSettingsStore(settings);\n this.metadataService = metadataService != null ? metadataService : new MetadataService(this.settings);\n this._claimsService = new ClaimsService(this.settings);\n this._validator = new ResponseValidator(this.settings, this.metadataService, this._claimsService);\n this._tokenClient = new TokenClient(this.settings, this.metadataService);\n }\n async createSigninRequest({\n state,\n request,\n request_uri,\n request_type,\n id_token_hint,\n login_hint,\n skipUserInfo,\n nonce,\n url_state,\n response_type = this.settings.response_type,\n scope = this.settings.scope,\n redirect_uri = this.settings.redirect_uri,\n prompt = this.settings.prompt,\n display = this.settings.display,\n max_age = this.settings.max_age,\n ui_locales = this.settings.ui_locales,\n acr_values = this.settings.acr_values,\n resource = this.settings.resource,\n response_mode = this.settings.response_mode,\n extraQueryParams = this.settings.extraQueryParams,\n extraTokenParams = this.settings.extraTokenParams,\n dpopJkt,\n omitScopeWhenRequesting = this.settings.omitScopeWhenRequesting\n }) {\n const logger2 = this._logger.create(\"createSigninRequest\");\n if (response_type !== \"code\") {\n throw new Error(\"Only the Authorization Code flow (with PKCE) is supported\");\n }\n const url = await this.metadataService.getAuthorizationEndpoint();\n logger2.debug(\"Received authorization endpoint\", url);\n const signinRequest = await SigninRequest.create({\n url,\n authority: this.settings.authority,\n client_id: this.settings.client_id,\n redirect_uri,\n response_type,\n scope,\n state_data: state,\n url_state,\n prompt,\n display,\n max_age,\n ui_locales,\n id_token_hint,\n login_hint,\n acr_values,\n dpopJkt,\n resource,\n request,\n request_uri,\n extraQueryParams,\n extraTokenParams,\n request_type,\n response_mode,\n client_secret: this.settings.client_secret,\n skipUserInfo,\n nonce,\n disablePKCE: this.settings.disablePKCE,\n omitScopeWhenRequesting\n });\n await this.clearStaleState();\n const signinState = signinRequest.state;\n await this.settings.stateStore.set(signinState.id, signinState.toStorageString());\n return signinRequest;\n }\n async readSigninResponseState(url, removeState = false) {\n const logger2 = this._logger.create(\"readSigninResponseState\");\n const response = new SigninResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger2.throw(new Error(\"No state in response\"));\n throw null;\n }\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger2.throw(new Error(\"No matching state found in storage\"));\n throw null;\n }\n const state = await SigninState.fromStorageString(storedStateString);\n return { state, response };\n }\n async processSigninResponse(url, extraHeaders, removeState = true) {\n const logger2 = this._logger.create(\"processSigninResponse\");\n const { state, response } = await this.readSigninResponseState(url, removeState);\n logger2.debug(\"received state from storage; validating response\");\n if (this.settings.dpop && this.settings.dpop.store) {\n const dpopProof = await this.getDpopProof(this.settings.dpop.store);\n extraHeaders = { ...extraHeaders, \"DPoP\": dpopProof };\n }\n try {\n await this._validator.validateSigninResponse(response, state, extraHeaders);\n } catch (err) {\n if (err instanceof ErrorDPoPNonce && this.settings.dpop) {\n const dpopProof = await this.getDpopProof(this.settings.dpop.store, err.nonce);\n extraHeaders[\"DPoP\"] = dpopProof;\n await this._validator.validateSigninResponse(response, state, extraHeaders);\n } else {\n throw err;\n }\n }\n return response;\n }\n async getDpopProof(dpopStore, nonce) {\n let keyPair;\n let dpopState;\n if (!(await dpopStore.getAllKeys()).includes(this.settings.client_id)) {\n keyPair = await CryptoUtils.generateDPoPKeys();\n dpopState = new DPoPState(keyPair, nonce);\n await dpopStore.set(this.settings.client_id, dpopState);\n } else {\n dpopState = await dpopStore.get(this.settings.client_id);\n if (dpopState.nonce !== nonce && nonce) {\n dpopState.nonce = nonce;\n await dpopStore.set(this.settings.client_id, dpopState);\n }\n }\n return await CryptoUtils.generateDPoPProof({\n url: await this.metadataService.getTokenEndpoint(false),\n httpMethod: \"POST\",\n keyPair: dpopState.keys,\n nonce: dpopState.nonce\n });\n }\n async processResourceOwnerPasswordCredentials({\n username,\n password,\n skipUserInfo = false,\n extraTokenParams = {}\n }) {\n const tokenResponse = await this._tokenClient.exchangeCredentials({ username, password, ...extraTokenParams });\n const signinResponse = new SigninResponse(new URLSearchParams());\n Object.assign(signinResponse, tokenResponse);\n await this._validator.validateCredentialsResponse(signinResponse, skipUserInfo);\n return signinResponse;\n }\n async useRefreshToken({\n state,\n redirect_uri,\n resource,\n timeoutInSeconds,\n extraHeaders,\n extraTokenParams\n }) {\n var _a;\n const logger2 = this._logger.create(\"useRefreshToken\");\n let scope;\n if (this.settings.refreshTokenAllowedScope === void 0) {\n scope = state.scope;\n } else {\n const allowableScopes = this.settings.refreshTokenAllowedScope.split(\" \");\n const providedScopes = ((_a = state.scope) == null ? void 0 : _a.split(\" \")) || [];\n scope = providedScopes.filter((s) => allowableScopes.includes(s)).join(\" \");\n }\n if (this.settings.dpop && this.settings.dpop.store) {\n const dpopProof = await this.getDpopProof(this.settings.dpop.store);\n extraHeaders = { ...extraHeaders, \"DPoP\": dpopProof };\n }\n let result;\n try {\n result = await this._tokenClient.exchangeRefreshToken({\n refresh_token: state.refresh_token,\n // provide the (possible filtered) scope list\n scope,\n redirect_uri,\n resource,\n timeoutInSeconds,\n extraHeaders,\n ...extraTokenParams\n });\n } catch (err) {\n if (err instanceof ErrorDPoPNonce && this.settings.dpop) {\n extraHeaders[\"DPoP\"] = await this.getDpopProof(this.settings.dpop.store, err.nonce);\n result = await this._tokenClient.exchangeRefreshToken({\n refresh_token: state.refresh_token,\n // provide the (possible filtered) scope list\n scope,\n redirect_uri,\n resource,\n timeoutInSeconds,\n extraHeaders,\n ...extraTokenParams\n });\n } else {\n throw err;\n }\n }\n const response = new SigninResponse(new URLSearchParams());\n Object.assign(response, result);\n logger2.debug(\"validating response\", response);\n await this._validator.validateRefreshResponse(response, {\n ...state,\n // override the scope in the state handed over to the validator\n // so it can set the granted scope to the requested scope in case none is included in the response\n scope\n });\n return response;\n }\n async createSignoutRequest({\n state,\n id_token_hint,\n client_id,\n request_type,\n url_state,\n post_logout_redirect_uri = this.settings.post_logout_redirect_uri,\n extraQueryParams = this.settings.extraQueryParams\n } = {}) {\n const logger2 = this._logger.create(\"createSignoutRequest\");\n const url = await this.metadataService.getEndSessionEndpoint();\n if (!url) {\n logger2.throw(new Error(\"No end session endpoint\"));\n throw null;\n }\n logger2.debug(\"Received end session endpoint\", url);\n if (!client_id && post_logout_redirect_uri && !id_token_hint) {\n client_id = this.settings.client_id;\n }\n const request = new SignoutRequest({\n url,\n id_token_hint,\n client_id,\n post_logout_redirect_uri,\n state_data: state,\n extraQueryParams,\n request_type,\n url_state\n });\n await this.clearStaleState();\n const signoutState = request.state;\n if (signoutState) {\n logger2.debug(\"Signout request has state to persist\");\n await this.settings.stateStore.set(signoutState.id, signoutState.toStorageString());\n }\n return request;\n }\n async readSignoutResponseState(url, removeState = false) {\n const logger2 = this._logger.create(\"readSignoutResponseState\");\n const response = new SignoutResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger2.debug(\"No state in response\");\n if (response.error) {\n logger2.warn(\"Response was error:\", response.error);\n throw new ErrorResponse(response);\n }\n return { state: void 0, response };\n }\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger2.throw(new Error(\"No matching state found in storage\"));\n throw null;\n }\n const state = await State.fromStorageString(storedStateString);\n return { state, response };\n }\n async processSignoutResponse(url) {\n const logger2 = this._logger.create(\"processSignoutResponse\");\n const { state, response } = await this.readSignoutResponseState(url, true);\n if (state) {\n logger2.debug(\"Received state from storage; validating response\");\n this._validator.validateSignoutResponse(response, state);\n } else {\n logger2.debug(\"No state from storage; skipping response validation\");\n }\n return response;\n }\n clearStaleState() {\n this._logger.create(\"clearStaleState\");\n return State.clearStaleState(this.settings.stateStore, this.settings.staleStateAgeInSeconds);\n }\n async revokeToken(token, type) {\n this._logger.create(\"revokeToken\");\n return await this._tokenClient.revoke({\n token,\n token_type_hint: type\n });\n }\n};\n\n// src/SessionMonitor.ts\nvar SessionMonitor = class {\n constructor(_userManager) {\n this._userManager = _userManager;\n this._logger = new Logger(\"SessionMonitor\");\n this._start = async (user) => {\n const session_state = user.session_state;\n if (!session_state) {\n return;\n }\n const logger2 = this._logger.create(\"_start\");\n if (user.profile) {\n this._sub = user.profile.sub;\n logger2.debug(\"session_state\", session_state, \", sub\", this._sub);\n } else {\n this._sub = void 0;\n logger2.debug(\"session_state\", session_state, \", anonymous user\");\n }\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.start(session_state);\n return;\n }\n try {\n const url = await this._userManager.metadataService.getCheckSessionIframe();\n if (url) {\n logger2.debug(\"initializing check session iframe\");\n const client_id = this._userManager.settings.client_id;\n const intervalInSeconds = this._userManager.settings.checkSessionIntervalInSeconds;\n const stopOnError = this._userManager.settings.stopCheckSessionOnError;\n const checkSessionIFrame = new CheckSessionIFrame(this._callback, client_id, url, intervalInSeconds, stopOnError);\n await checkSessionIFrame.load();\n this._checkSessionIFrame = checkSessionIFrame;\n checkSessionIFrame.start(session_state);\n } else {\n logger2.warn(\"no check session iframe found in the metadata\");\n }\n } catch (err) {\n logger2.error(\"Error from getCheckSessionIframe:\", err instanceof Error ? err.message : err);\n }\n };\n this._stop = () => {\n const logger2 = this._logger.create(\"_stop\");\n this._sub = void 0;\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.stop();\n }\n if (this._userManager.settings.monitorAnonymousSession) {\n const timerHandle = setInterval(async () => {\n clearInterval(timerHandle);\n try {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub ? {\n sub: session.sub\n } : null\n };\n void this._start(tmpUser);\n }\n } catch (err) {\n logger2.error(\"error from querySessionStatus\", err instanceof Error ? err.message : err);\n }\n }, 1e3);\n }\n };\n this._callback = async () => {\n const logger2 = this._logger.create(\"_callback\");\n try {\n const session = await this._userManager.querySessionStatus();\n let raiseEvent = true;\n if (session && this._checkSessionIFrame) {\n if (session.sub === this._sub) {\n raiseEvent = false;\n this._checkSessionIFrame.start(session.session_state);\n logger2.debug(\"same sub still logged in at OP, session state has changed, restarting check session iframe; session_state\", session.session_state);\n await this._userManager.events._raiseUserSessionChanged();\n } else {\n logger2.debug(\"different subject signed into OP\", session.sub);\n }\n } else {\n logger2.debug(\"subject no longer signed into OP\");\n }\n if (raiseEvent) {\n if (this._sub) {\n await this._userManager.events._raiseUserSignedOut();\n } else {\n await this._userManager.events._raiseUserSignedIn();\n }\n } else {\n logger2.debug(\"no change in session detected, no event to raise\");\n }\n } catch (err) {\n if (this._sub) {\n logger2.debug(\"Error calling queryCurrentSigninSession; raising signed out event\", err);\n await this._userManager.events._raiseUserSignedOut();\n }\n }\n };\n if (!_userManager) {\n this._logger.throw(new Error(\"No user manager passed\"));\n }\n this._userManager.events.addUserLoaded(this._start);\n this._userManager.events.addUserUnloaded(this._stop);\n this._init().catch((err) => {\n this._logger.error(err);\n });\n }\n async _init() {\n this._logger.create(\"_init\");\n const user = await this._userManager.getUser();\n if (user) {\n void this._start(user);\n } else if (this._userManager.settings.monitorAnonymousSession) {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub ? {\n sub: session.sub\n } : null\n };\n void this._start(tmpUser);\n }\n }\n }\n};\n\n// src/User.ts\nvar User = class _User {\n constructor(args) {\n var _a;\n this.id_token = args.id_token;\n this.session_state = (_a = args.session_state) != null ? _a : null;\n this.access_token = args.access_token;\n this.refresh_token = args.refresh_token;\n this.token_type = args.token_type;\n this.scope = args.scope;\n this.profile = args.profile;\n this.expires_at = args.expires_at;\n this.state = args.userState;\n this.url_state = args.url_state;\n }\n /** Computed number of seconds the access token has remaining. */\n get expires_in() {\n if (this.expires_at === void 0) {\n return void 0;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n set expires_in(value) {\n if (value !== void 0) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n /** Computed value indicating if the access token is expired. */\n get expired() {\n const expires_in = this.expires_in;\n if (expires_in === void 0) {\n return void 0;\n }\n return expires_in <= 0;\n }\n /** Array representing the parsed values from the `scope`. */\n get scopes() {\n var _a, _b;\n return (_b = (_a = this.scope) == null ? void 0 : _a.split(\" \")) != null ? _b : [];\n }\n toStorageString() {\n new Logger(\"User\").create(\"toStorageString\");\n return JSON.stringify({\n id_token: this.id_token,\n session_state: this.session_state,\n access_token: this.access_token,\n refresh_token: this.refresh_token,\n token_type: this.token_type,\n scope: this.scope,\n profile: this.profile,\n expires_at: this.expires_at\n });\n }\n static fromStorageString(storageString) {\n Logger.createStatic(\"User\", \"fromStorageString\");\n return new _User(JSON.parse(storageString));\n }\n};\n\n// src/navigators/AbstractChildWindow.ts\nvar messageSource = \"oidc-client\";\nvar AbstractChildWindow = class {\n constructor() {\n this._abort = new Event(\"Window navigation aborted\");\n this._disposeHandlers = /* @__PURE__ */ new Set();\n this._window = null;\n }\n async navigate(params) {\n const logger2 = this._logger.create(\"navigate\");\n if (!this._window) {\n throw new Error(\"Attempted to navigate on a disposed window\");\n }\n logger2.debug(\"setting URL in window\");\n this._window.location.replace(params.url);\n const { url, keepOpen } = await new Promise((resolve, reject) => {\n const listener = (e) => {\n var _a;\n const data = e.data;\n const origin = (_a = params.scriptOrigin) != null ? _a : window.location.origin;\n if (e.origin !== origin || (data == null ? void 0 : data.source) !== messageSource) {\n return;\n }\n try {\n const state = UrlUtils.readParams(data.url, params.response_mode).get(\"state\");\n if (!state) {\n logger2.warn(\"no state found in response url\");\n }\n if (e.source !== this._window && state !== params.state) {\n return;\n }\n } catch {\n this._dispose();\n reject(new Error(\"Invalid response from window\"));\n }\n resolve(data);\n };\n window.addEventListener(\"message\", listener, false);\n this._disposeHandlers.add(() => window.removeEventListener(\"message\", listener, false));\n const channel = new BroadcastChannel(`oidc-client-popup-${params.state}`);\n channel.addEventListener(\"message\", listener, false);\n this._disposeHandlers.add(() => channel.close());\n this._disposeHandlers.add(this._abort.addHandler((reason) => {\n this._dispose();\n reject(reason);\n }));\n });\n logger2.debug(\"got response from window\");\n this._dispose();\n if (!keepOpen) {\n this.close();\n }\n return { url };\n }\n _dispose() {\n this._logger.create(\"_dispose\");\n for (const dispose of this._disposeHandlers) {\n dispose();\n }\n this._disposeHandlers.clear();\n }\n static _notifyParent(parent, url, keepOpen = false, targetOrigin = window.location.origin) {\n const msgData = {\n source: messageSource,\n url,\n keepOpen\n };\n const logger2 = new Logger(\"_notifyParent\");\n if (parent) {\n logger2.debug(\"With parent. Using parent.postMessage.\");\n parent.postMessage(msgData, targetOrigin);\n } else {\n logger2.debug(\"No parent. Using BroadcastChannel.\");\n const state = new URL(url).searchParams.get(\"state\");\n if (!state) {\n throw new Error(\"No parent and no state in URL. Can't complete notification.\");\n }\n const channel = new BroadcastChannel(`oidc-client-popup-${state}`);\n channel.postMessage(msgData);\n channel.close();\n }\n }\n};\n\n// src/UserManagerSettings.ts\nvar DefaultPopupWindowFeatures = {\n location: false,\n toolbar: false,\n height: 640,\n closePopupWindowAfterInSeconds: -1\n};\nvar DefaultPopupTarget = \"_blank\";\nvar DefaultAccessTokenExpiringNotificationTimeInSeconds = 60;\nvar DefaultCheckSessionIntervalInSeconds = 2;\nvar DefaultSilentRequestTimeoutInSeconds = 10;\nvar UserManagerSettingsStore = class extends OidcClientSettingsStore {\n constructor(args) {\n const {\n popup_redirect_uri = args.redirect_uri,\n popup_post_logout_redirect_uri = args.post_logout_redirect_uri,\n popupWindowFeatures = DefaultPopupWindowFeatures,\n popupWindowTarget = DefaultPopupTarget,\n redirectMethod = \"assign\",\n redirectTarget = \"self\",\n iframeNotifyParentOrigin = args.iframeNotifyParentOrigin,\n iframeScriptOrigin = args.iframeScriptOrigin,\n requestTimeoutInSeconds,\n silent_redirect_uri = args.redirect_uri,\n silentRequestTimeoutInSeconds,\n automaticSilentRenew = true,\n validateSubOnSilentRenew = true,\n includeIdTokenInSilentRenew = false,\n monitorSession = false,\n monitorAnonymousSession = false,\n checkSessionIntervalInSeconds = DefaultCheckSessionIntervalInSeconds,\n query_status_response_type = \"code\",\n stopCheckSessionOnError = true,\n revokeTokenTypes = [\"access_token\", \"refresh_token\"],\n revokeTokensOnSignout = false,\n includeIdTokenInSilentSignout = false,\n accessTokenExpiringNotificationTimeInSeconds = DefaultAccessTokenExpiringNotificationTimeInSeconds,\n userStore\n } = args;\n super(args);\n this.popup_redirect_uri = popup_redirect_uri;\n this.popup_post_logout_redirect_uri = popup_post_logout_redirect_uri;\n this.popupWindowFeatures = popupWindowFeatures;\n this.popupWindowTarget = popupWindowTarget;\n this.redirectMethod = redirectMethod;\n this.redirectTarget = redirectTarget;\n this.iframeNotifyParentOrigin = iframeNotifyParentOrigin;\n this.iframeScriptOrigin = iframeScriptOrigin;\n this.silent_redirect_uri = silent_redirect_uri;\n this.silentRequestTimeoutInSeconds = silentRequestTimeoutInSeconds || requestTimeoutInSeconds || DefaultSilentRequestTimeoutInSeconds;\n this.automaticSilentRenew = automaticSilentRenew;\n this.validateSubOnSilentRenew = validateSubOnSilentRenew;\n this.includeIdTokenInSilentRenew = includeIdTokenInSilentRenew;\n this.monitorSession = monitorSession;\n this.monitorAnonymousSession = monitorAnonymousSession;\n this.checkSessionIntervalInSeconds = checkSessionIntervalInSeconds;\n this.stopCheckSessionOnError = stopCheckSessionOnError;\n this.query_status_response_type = query_status_response_type;\n this.revokeTokenTypes = revokeTokenTypes;\n this.revokeTokensOnSignout = revokeTokensOnSignout;\n this.includeIdTokenInSilentSignout = includeIdTokenInSilentSignout;\n this.accessTokenExpiringNotificationTimeInSeconds = accessTokenExpiringNotificationTimeInSeconds;\n if (userStore) {\n this.userStore = userStore;\n } else {\n const store = typeof window !== \"undefined\" ? window.sessionStorage : new InMemoryWebStorage();\n this.userStore = new WebStorageStateStore({ store });\n }\n }\n};\n\n// src/navigators/IFrameWindow.ts\nvar IFrameWindow = class _IFrameWindow extends AbstractChildWindow {\n constructor({\n silentRequestTimeoutInSeconds = DefaultSilentRequestTimeoutInSeconds\n }) {\n super();\n this._logger = new Logger(\"IFrameWindow\");\n this._timeoutInSeconds = silentRequestTimeoutInSeconds;\n this._frame = _IFrameWindow.createHiddenIframe();\n this._window = this._frame.contentWindow;\n }\n static createHiddenIframe() {\n const iframe = window.document.createElement(\"iframe\");\n iframe.style.visibility = \"hidden\";\n iframe.style.position = \"fixed\";\n iframe.style.left = \"-1000px\";\n iframe.style.top = \"0\";\n iframe.width = \"0\";\n iframe.height = \"0\";\n window.document.body.appendChild(iframe);\n return iframe;\n }\n async navigate(params) {\n this._logger.debug(\"navigate: Using timeout of:\", this._timeoutInSeconds);\n const timer = setTimeout(() => void this._abort.raise(new ErrorTimeout(\"IFrame timed out without a response\")), this._timeoutInSeconds * 1e3);\n this._disposeHandlers.add(() => clearTimeout(timer));\n return await super.navigate(params);\n }\n close() {\n var _a;\n if (this._frame) {\n if (this._frame.parentNode) {\n this._frame.addEventListener(\"load\", (ev) => {\n var _a2;\n const frame = ev.target;\n (_a2 = frame.parentNode) == null ? void 0 : _a2.removeChild(frame);\n void this._abort.raise(new Error(\"IFrame removed from DOM\"));\n }, true);\n (_a = this._frame.contentWindow) == null ? void 0 : _a.location.replace(\"about:blank\");\n }\n this._frame = null;\n }\n this._window = null;\n }\n static notifyParent(url, targetOrigin) {\n return super._notifyParent(window.parent, url, false, targetOrigin);\n }\n};\n\n// src/navigators/IFrameNavigator.ts\nvar IFrameNavigator = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"IFrameNavigator\");\n }\n async prepare({\n silentRequestTimeoutInSeconds = this._settings.silentRequestTimeoutInSeconds\n }) {\n return new IFrameWindow({ silentRequestTimeoutInSeconds });\n }\n async callback(url) {\n this._logger.create(\"callback\");\n IFrameWindow.notifyParent(url, this._settings.iframeNotifyParentOrigin);\n }\n};\n\n// src/navigators/PopupWindow.ts\nvar checkForPopupClosedInterval = 500;\nvar second = 1e3;\nvar PopupWindow = class extends AbstractChildWindow {\n constructor({\n popupWindowTarget = DefaultPopupTarget,\n popupWindowFeatures = {},\n popupSignal,\n popupAbortOnClose\n }) {\n super();\n this._logger = new Logger(\"PopupWindow\");\n const centeredPopup = PopupUtils.center({ ...DefaultPopupWindowFeatures, ...popupWindowFeatures });\n this._window = window.open(void 0, popupWindowTarget, PopupUtils.serialize(centeredPopup));\n this.abortOnClose = Boolean(popupAbortOnClose);\n if (popupSignal) {\n popupSignal.addEventListener(\"abort\", () => {\n var _a;\n void this._abort.raise(new Error((_a = popupSignal.reason) != null ? _a : \"Popup aborted\"));\n });\n }\n if (popupWindowFeatures.closePopupWindowAfterInSeconds && popupWindowFeatures.closePopupWindowAfterInSeconds > 0) {\n setTimeout(() => {\n if (!this._window || typeof this._window.closed !== \"boolean\" || this._window.closed) {\n void this._abort.raise(new Error(\"Popup blocked by user\"));\n return;\n }\n this.close();\n }, popupWindowFeatures.closePopupWindowAfterInSeconds * second);\n }\n }\n async navigate(params) {\n var _a;\n (_a = this._window) == null ? void 0 : _a.focus();\n const popupClosedInterval = setInterval(() => {\n if (!this._window || this._window.closed) {\n this._logger.debug(\"Popup closed by user or isolated by redirect\");\n clearPopupClosedInterval();\n this._disposeHandlers.delete(clearPopupClosedInterval);\n if (this.abortOnClose) {\n void this._abort.raise(new Error(\"Popup closed by user\"));\n }\n }\n }, checkForPopupClosedInterval);\n const clearPopupClosedInterval = () => clearInterval(popupClosedInterval);\n this._disposeHandlers.add(clearPopupClosedInterval);\n return await super.navigate(params);\n }\n close() {\n if (this._window) {\n if (!this._window.closed) {\n this._window.close();\n void this._abort.raise(new Error(\"Popup closed\"));\n }\n }\n this._window = null;\n }\n static notifyOpener(url, keepOpen) {\n super._notifyParent(window.opener, url, keepOpen);\n if (!keepOpen && !window.opener) {\n window.close();\n }\n }\n};\n\n// src/navigators/PopupNavigator.ts\nvar PopupNavigator = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"PopupNavigator\");\n }\n async prepare({\n popupWindowFeatures = this._settings.popupWindowFeatures,\n popupWindowTarget = this._settings.popupWindowTarget,\n popupSignal,\n popupAbortOnClose\n }) {\n return new PopupWindow({\n popupWindowFeatures,\n popupWindowTarget,\n popupSignal,\n popupAbortOnClose\n });\n }\n async callback(url, { keepOpen = false }) {\n this._logger.create(\"callback\");\n PopupWindow.notifyOpener(url, keepOpen);\n }\n};\n\n// src/navigators/RedirectNavigator.ts\nvar RedirectNavigator = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"RedirectNavigator\");\n }\n async prepare({\n redirectMethod = this._settings.redirectMethod,\n redirectTarget = this._settings.redirectTarget\n }) {\n var _a;\n this._logger.create(\"prepare\");\n let targetWindow = window.self;\n if (redirectTarget === \"top\") {\n targetWindow = (_a = window.top) != null ? _a : window.self;\n }\n const redirect = targetWindow.location[redirectMethod].bind(targetWindow.location);\n let abort;\n return {\n navigate: async (params) => {\n this._logger.create(\"navigate\");\n const promise = new Promise((resolve, reject) => {\n abort = reject;\n window.addEventListener(\"pageshow\", () => resolve(window.location.href));\n redirect(params.url);\n });\n return await promise;\n },\n close: () => {\n this._logger.create(\"close\");\n abort == null ? void 0 : abort(new Error(\"Redirect aborted\"));\n targetWindow.stop();\n }\n };\n }\n async callback() {\n return;\n }\n};\n\n// src/UserManagerEvents.ts\nvar UserManagerEvents = class extends AccessTokenEvents {\n constructor(settings) {\n super({ expiringNotificationTimeInSeconds: settings.accessTokenExpiringNotificationTimeInSeconds });\n this._logger = new Logger(\"UserManagerEvents\");\n this._userLoaded = new Event(\"User loaded\");\n this._userUnloaded = new Event(\"User unloaded\");\n this._silentRenewError = new Event(\"Silent renew error\");\n this._userSignedIn = new Event(\"User signed in\");\n this._userSignedOut = new Event(\"User signed out\");\n this._userSessionChanged = new Event(\"User session changed\");\n }\n async load(user, raiseEvent = true) {\n await super.load(user);\n if (raiseEvent) {\n await this._userLoaded.raise(user);\n }\n }\n async unload() {\n await super.unload();\n await this._userUnloaded.raise();\n }\n /**\n * Add callback: Raised when a user session has been established (or re-established).\n */\n addUserLoaded(cb) {\n return this._userLoaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been established (or re-established).\n */\n removeUserLoaded(cb) {\n return this._userLoaded.removeHandler(cb);\n }\n /**\n * Add callback: Raised when a user session has been terminated.\n */\n addUserUnloaded(cb) {\n return this._userUnloaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been terminated.\n */\n removeUserUnloaded(cb) {\n return this._userUnloaded.removeHandler(cb);\n }\n /**\n * Add callback: Raised when the automatic silent renew has failed.\n */\n addSilentRenewError(cb) {\n return this._silentRenewError.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the automatic silent renew has failed.\n */\n removeSilentRenewError(cb) {\n return this._silentRenewError.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseSilentRenewError(e) {\n await this._silentRenewError.raise(e);\n }\n /**\n * Add callback: Raised when the user is signed in (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n addUserSignedIn(cb) {\n return this._userSignedIn.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user is signed in (when `monitorSession` is set).\n */\n removeUserSignedIn(cb) {\n this._userSignedIn.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseUserSignedIn() {\n await this._userSignedIn.raise();\n }\n /**\n * Add callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n addUserSignedOut(cb) {\n return this._userSignedOut.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n */\n removeUserSignedOut(cb) {\n this._userSignedOut.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseUserSignedOut() {\n await this._userSignedOut.raise();\n }\n /**\n * Add callback: Raised when the user session changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n addUserSessionChanged(cb) {\n return this._userSessionChanged.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user session changed (when `monitorSession` is set).\n */\n removeUserSessionChanged(cb) {\n this._userSessionChanged.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseUserSessionChanged() {\n await this._userSessionChanged.raise();\n }\n};\n\n// src/SilentRenewService.ts\nvar SilentRenewService = class {\n constructor(_userManager) {\n this._userManager = _userManager;\n this._logger = new Logger(\"SilentRenewService\");\n this._isStarted = false;\n this._retryTimer = new Timer(\"Retry Silent Renew\");\n this._tokenExpiring = async () => {\n const logger2 = this._logger.create(\"_tokenExpiring\");\n try {\n await this._userManager.signinSilent();\n logger2.debug(\"silent token renewal successful\");\n } catch (err) {\n if (err instanceof ErrorTimeout) {\n logger2.warn(\"ErrorTimeout from signinSilent:\", err, \"retry in 5s\");\n this._retryTimer.init(5);\n return;\n }\n logger2.error(\"Error from signinSilent:\", err);\n await this._userManager.events._raiseSilentRenewError(err);\n }\n };\n }\n async start() {\n const logger2 = this._logger.create(\"start\");\n if (!this._isStarted) {\n this._isStarted = true;\n this._userManager.events.addAccessTokenExpiring(this._tokenExpiring);\n this._retryTimer.addHandler(this._tokenExpiring);\n try {\n await this._userManager.getUser();\n } catch (err) {\n logger2.error(\"getUser error\", err);\n }\n }\n }\n stop() {\n if (this._isStarted) {\n this._retryTimer.cancel();\n this._retryTimer.removeHandler(this._tokenExpiring);\n this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring);\n this._isStarted = false;\n }\n }\n};\n\n// src/RefreshState.ts\nvar RefreshState = class {\n constructor(args) {\n this.refresh_token = args.refresh_token;\n this.id_token = args.id_token;\n this.session_state = args.session_state;\n this.scope = args.scope;\n this.profile = args.profile;\n this.data = args.state;\n }\n};\n\n// src/UserManager.ts\nvar UserManager = class {\n constructor(settings, redirectNavigator, popupNavigator, iframeNavigator) {\n this._logger = new Logger(\"UserManager\");\n this.settings = new UserManagerSettingsStore(settings);\n this._client = new OidcClient(settings);\n this._redirectNavigator = redirectNavigator != null ? redirectNavigator : new RedirectNavigator(this.settings);\n this._popupNavigator = popupNavigator != null ? popupNavigator : new PopupNavigator(this.settings);\n this._iframeNavigator = iframeNavigator != null ? iframeNavigator : new IFrameNavigator(this.settings);\n this._events = new UserManagerEvents(this.settings);\n this._silentRenewService = new SilentRenewService(this);\n if (this.settings.automaticSilentRenew) {\n this.startSilentRenew();\n }\n this._sessionMonitor = null;\n if (this.settings.monitorSession) {\n this._sessionMonitor = new SessionMonitor(this);\n }\n }\n /**\n * Get object used to register for events raised by the `UserManager`.\n */\n get events() {\n return this._events;\n }\n /**\n * Get object used to access the metadata configuration of the identity provider.\n */\n get metadataService() {\n return this._client.metadataService;\n }\n /**\n * Load the `User` object for the currently authenticated user.\n *\n * @param raiseEvent - If `true`, the `UserLoaded` event will be raised. Defaults to false.\n * @returns A promise\n */\n async getUser(raiseEvent = false) {\n const logger2 = this._logger.create(\"getUser\");\n const user = await this._loadUser();\n if (user) {\n logger2.info(\"user loaded\");\n await this._events.load(user, raiseEvent);\n return user;\n }\n logger2.info(\"user not found in storage\");\n return null;\n }\n /**\n * Remove from any storage the currently authenticated user.\n *\n * @returns A promise\n */\n async removeUser() {\n const logger2 = this._logger.create(\"removeUser\");\n await this.storeUser(null);\n logger2.info(\"user removed from storage\");\n await this._events.unload();\n }\n /**\n * Trigger a redirect of the current window to the authorization endpoint.\n *\n * @returns A promise\n *\n * @throws `Error` In cases of wrong authentication.\n */\n async signinRedirect(args = {}) {\n var _a;\n this._logger.create(\"signinRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n let dpopJkt;\n if ((_a = this.settings.dpop) == null ? void 0 : _a.bind_authorization_code) {\n dpopJkt = await this.generateDPoPJkt(this.settings.dpop);\n }\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signinStart({\n request_type: \"si:r\",\n dpopJkt,\n ...requestArgs\n }, handle);\n }\n /**\n * Process the response (callback) from the authorization endpoint.\n * It is recommended to use {@link UserManager.signinCallback} instead.\n *\n * @returns A promise containing the authenticated `User`.\n *\n * @see {@link UserManager.signinCallback}\n */\n async signinRedirectCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signinRedirectCallback\");\n const user = await this._signinEnd(url);\n if (user.profile && user.profile.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n return user;\n }\n /**\n * Trigger the signin with user/password.\n *\n * @returns A promise containing the authenticated `User`.\n * @throws {@link ErrorResponse} In cases of wrong authentication.\n */\n async signinResourceOwnerCredentials({\n username,\n password,\n skipUserInfo = false\n }) {\n const logger2 = this._logger.create(\"signinResourceOwnerCredential\");\n const signinResponse = await this._client.processResourceOwnerPasswordCredentials({\n username,\n password,\n skipUserInfo,\n extraTokenParams: this.settings.extraTokenParams\n });\n logger2.debug(\"got signin response\");\n const user = await this._buildUser(signinResponse);\n if (user.profile && user.profile.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n return user;\n }\n /**\n * Trigger a request (via a popup window) to the authorization endpoint.\n *\n * @returns A promise containing the authenticated `User`.\n * @throws `Error` In cases of wrong authentication.\n */\n async signinPopup(args = {}) {\n var _a;\n const logger2 = this._logger.create(\"signinPopup\");\n let dpopJkt;\n if ((_a = this.settings.dpop) == null ? void 0 : _a.bind_authorization_code) {\n dpopJkt = await this.generateDPoPJkt(this.settings.dpop);\n }\n const {\n popupWindowFeatures,\n popupWindowTarget,\n popupSignal,\n popupAbortOnClose,\n ...requestArgs\n } = args;\n const url = this.settings.popup_redirect_uri;\n if (!url) {\n logger2.throw(new Error(\"No popup_redirect_uri configured\"));\n }\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget, popupSignal, popupAbortOnClose });\n const user = await this._signin({\n request_type: \"si:p\",\n redirect_uri: url,\n display: \"popup\",\n dpopJkt,\n ...requestArgs\n }, handle);\n if (user) {\n if (user.profile && user.profile.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n }\n return user;\n }\n /**\n * Notify the opening window of response (callback) from the authorization endpoint.\n * It is recommended to use {@link UserManager.signinCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signinCallback}\n */\n async signinPopupCallback(url = window.location.href, keepOpen = false) {\n const logger2 = this._logger.create(\"signinPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger2.info(\"success\");\n }\n /**\n * Trigger a silent request (via refresh token or an iframe) to the authorization endpoint.\n *\n * @returns A promise that contains the authenticated `User`.\n */\n async signinSilent(args = {}) {\n var _a, _b;\n const logger2 = this._logger.create(\"signinSilent\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n let user = await this._loadUser();\n if (!args.forceIframeAuth && (user == null ? void 0 : user.refresh_token)) {\n logger2.debug(\"using refresh token\");\n const state = new RefreshState(user);\n return await this._useRefreshToken({\n state,\n redirect_uri: requestArgs.redirect_uri,\n resource: requestArgs.resource,\n extraTokenParams: requestArgs.extraTokenParams,\n timeoutInSeconds: silentRequestTimeoutInSeconds\n });\n }\n let dpopJkt;\n if ((_a = this.settings.dpop) == null ? void 0 : _a.bind_authorization_code) {\n dpopJkt = await this.generateDPoPJkt(this.settings.dpop);\n }\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger2.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n let verifySub;\n if (user && this.settings.validateSubOnSilentRenew) {\n logger2.debug(\"subject prior to silent renew:\", user.profile.sub);\n verifySub = user.profile.sub;\n }\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n user = await this._signin({\n request_type: \"si:s\",\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user == null ? void 0 : user.id_token : void 0,\n dpopJkt,\n ...requestArgs\n }, handle, verifySub);\n if (user) {\n if ((_b = user.profile) == null ? void 0 : _b.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n }\n return user;\n }\n async _useRefreshToken(args) {\n const response = await this._client.useRefreshToken({\n timeoutInSeconds: this.settings.silentRequestTimeoutInSeconds,\n ...args\n });\n const user = new User({ ...args.state, ...response });\n await this.storeUser(user);\n await this._events.load(user);\n return user;\n }\n /**\n *\n * Notify the parent window of response (callback) from the authorization endpoint.\n * It is recommended to use {@link UserManager.signinCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signinCallback}\n */\n async signinSilentCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signinSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger2.info(\"success\");\n }\n /**\n * Process any response (callback) from the authorization endpoint, by dispatching the request_type\n * and executing one of the following functions:\n * - {@link UserManager.signinRedirectCallback}\n * - {@link UserManager.signinPopupCallback}\n * - {@link UserManager.signinSilentCallback}\n *\n * @throws `Error` If request_type is unknown or signin cannot be processed.\n */\n async signinCallback(url = window.location.href) {\n const { state } = await this._client.readSigninResponseState(url);\n switch (state.request_type) {\n case \"si:r\":\n return await this.signinRedirectCallback(url);\n case \"si:p\":\n await this.signinPopupCallback(url);\n break;\n case \"si:s\":\n await this.signinSilentCallback(url);\n break;\n default:\n throw new Error(\"invalid response_type in state\");\n }\n return void 0;\n }\n /**\n * Process any response (callback) from the end session endpoint, by dispatching the request_type\n * and executing one of the following functions:\n * - {@link UserManager.signoutRedirectCallback}\n * - {@link UserManager.signoutPopupCallback}\n * - {@link UserManager.signoutSilentCallback}\n *\n * @throws `Error` If request_type is unknown or signout cannot be processed.\n */\n async signoutCallback(url = window.location.href, keepOpen = false) {\n const { state } = await this._client.readSignoutResponseState(url);\n if (!state) {\n return void 0;\n }\n switch (state.request_type) {\n case \"so:r\":\n return await this.signoutRedirectCallback(url);\n case \"so:p\":\n await this.signoutPopupCallback(url, keepOpen);\n break;\n case \"so:s\":\n await this.signoutSilentCallback(url);\n break;\n default:\n throw new Error(\"invalid response_type in state\");\n }\n return void 0;\n }\n /**\n * Query OP for user's current signin status.\n *\n * @returns A promise object with session_state and subject identifier.\n */\n async querySessionStatus(args = {}) {\n const logger2 = this._logger.create(\"querySessionStatus\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger2.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n const user = await this._loadUser();\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n const navResponse = await this._signinStart({\n request_type: \"si:s\",\n // this acts like a signin silent\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user == null ? void 0 : user.id_token : void 0,\n response_type: this.settings.query_status_response_type,\n scope: \"openid\",\n skipUserInfo: true,\n ...requestArgs\n }, handle);\n try {\n const extraHeaders = {};\n const signinResponse = await this._client.processSigninResponse(navResponse.url, extraHeaders);\n logger2.debug(\"got signin response\");\n if (signinResponse.session_state && signinResponse.profile.sub) {\n logger2.info(\"success for subject\", signinResponse.profile.sub);\n return {\n session_state: signinResponse.session_state,\n sub: signinResponse.profile.sub\n };\n }\n logger2.info(\"success, user not authenticated\");\n return null;\n } catch (err) {\n if (this.settings.monitorAnonymousSession && err instanceof ErrorResponse) {\n switch (err.error) {\n case \"login_required\":\n case \"consent_required\":\n case \"interaction_required\":\n case \"account_selection_required\":\n logger2.info(\"success for anonymous user\");\n return {\n session_state: err.session_state\n };\n }\n }\n throw err;\n }\n }\n async _signin(args, handle, verifySub) {\n const navResponse = await this._signinStart(args, handle);\n return await this._signinEnd(navResponse.url, verifySub);\n }\n async _signinStart(args, handle) {\n const logger2 = this._logger.create(\"_signinStart\");\n try {\n const signinRequest = await this._client.createSigninRequest(args);\n logger2.debug(\"got signin request\");\n return await handle.navigate({\n url: signinRequest.url,\n state: signinRequest.state.id,\n response_mode: signinRequest.state.response_mode,\n scriptOrigin: this.settings.iframeScriptOrigin\n });\n } catch (err) {\n logger2.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n async _signinEnd(url, verifySub) {\n const logger2 = this._logger.create(\"_signinEnd\");\n const extraHeaders = {};\n const signinResponse = await this._client.processSigninResponse(url, extraHeaders);\n logger2.debug(\"got signin response\");\n const user = await this._buildUser(signinResponse, verifySub);\n return user;\n }\n async _buildUser(signinResponse, verifySub) {\n const logger2 = this._logger.create(\"_buildUser\");\n const user = new User(signinResponse);\n if (verifySub) {\n if (verifySub !== user.profile.sub) {\n logger2.debug(\"current user does not match user returned from signin. sub from signin:\", user.profile.sub);\n throw new ErrorResponse({ ...signinResponse, error: \"login_required\" });\n }\n logger2.debug(\"current user matches user returned from signin\");\n }\n await this.storeUser(user);\n logger2.debug(\"user stored\");\n await this._events.load(user);\n return user;\n }\n /**\n * Trigger a redirect of the current window to the end session endpoint.\n *\n * @returns A promise\n */\n async signoutRedirect(args = {}) {\n const logger2 = this._logger.create(\"signoutRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signoutStart({\n request_type: \"so:r\",\n post_logout_redirect_uri: this.settings.post_logout_redirect_uri,\n ...requestArgs\n }, handle);\n logger2.info(\"success\");\n }\n /**\n * Process response (callback) from the end session endpoint.\n * It is recommended to use {@link UserManager.signoutCallback} instead.\n *\n * @returns A promise containing signout response\n *\n * @see {@link UserManager.signoutCallback}\n */\n async signoutRedirectCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signoutRedirectCallback\");\n const response = await this._signoutEnd(url);\n logger2.info(\"success\");\n return response;\n }\n /**\n * Trigger a redirect of a popup window to the end session endpoint.\n *\n * @returns A promise\n */\n async signoutPopup(args = {}) {\n const logger2 = this._logger.create(\"signoutPopup\");\n const {\n popupWindowFeatures,\n popupWindowTarget,\n popupSignal,\n ...requestArgs\n } = args;\n const url = this.settings.popup_post_logout_redirect_uri;\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget, popupSignal });\n await this._signout({\n request_type: \"so:p\",\n post_logout_redirect_uri: url,\n // we're putting a dummy entry in here because we\n // need a unique id from the state for notification\n // to the parent window, which is necessary if we\n // plan to return back to the client after signout\n // and so we can close the popup after signout\n state: url == null ? void 0 : {},\n ...requestArgs\n }, handle);\n logger2.info(\"success\");\n }\n /**\n * Process response (callback) from the end session endpoint from a popup window.\n * It is recommended to use {@link UserManager.signoutCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signoutCallback}\n */\n async signoutPopupCallback(url = window.location.href, keepOpen = false) {\n const logger2 = this._logger.create(\"signoutPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger2.info(\"success\");\n }\n async _signout(args, handle) {\n const navResponse = await this._signoutStart(args, handle);\n return await this._signoutEnd(navResponse.url);\n }\n async _signoutStart(args = {}, handle) {\n var _a;\n const logger2 = this._logger.create(\"_signoutStart\");\n try {\n const user = await this._loadUser();\n logger2.debug(\"loaded current user from storage\");\n if (this.settings.revokeTokensOnSignout) {\n await this._revokeInternal(user);\n }\n const id_token = args.id_token_hint || user && user.id_token;\n if (id_token) {\n logger2.debug(\"setting id_token_hint in signout request\");\n args.id_token_hint = id_token;\n }\n await this.removeUser();\n logger2.debug(\"user removed, creating signout request\");\n const signoutRequest = await this._client.createSignoutRequest(args);\n logger2.debug(\"got signout request\");\n return await handle.navigate({\n url: signoutRequest.url,\n state: (_a = signoutRequest.state) == null ? void 0 : _a.id,\n scriptOrigin: this.settings.iframeScriptOrigin\n });\n } catch (err) {\n logger2.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n async _signoutEnd(url) {\n const logger2 = this._logger.create(\"_signoutEnd\");\n const signoutResponse = await this._client.processSignoutResponse(url);\n logger2.debug(\"got signout response\");\n return signoutResponse;\n }\n /**\n * Trigger a silent request (via an iframe) to the end session endpoint.\n *\n * @returns A promise\n */\n async signoutSilent(args = {}) {\n var _a;\n const logger2 = this._logger.create(\"signoutSilent\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n const id_token_hint = this.settings.includeIdTokenInSilentSignout ? (_a = await this._loadUser()) == null ? void 0 : _a.id_token : void 0;\n const url = this.settings.popup_post_logout_redirect_uri;\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n await this._signout({\n request_type: \"so:s\",\n post_logout_redirect_uri: url,\n id_token_hint,\n ...requestArgs\n }, handle);\n logger2.info(\"success\");\n }\n /**\n * Notify the parent window of response (callback) from the end session endpoint.\n * It is recommended to use {@link UserManager.signoutCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signoutCallback}\n */\n async signoutSilentCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signoutSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger2.info(\"success\");\n }\n async revokeTokens(types) {\n const user = await this._loadUser();\n await this._revokeInternal(user, types);\n }\n async _revokeInternal(user, types = this.settings.revokeTokenTypes) {\n const logger2 = this._logger.create(\"_revokeInternal\");\n if (!user) return;\n const typesPresent = types.filter((type) => typeof user[type] === \"string\");\n if (!typesPresent.length) {\n logger2.debug(\"no need to revoke due to no token(s)\");\n return;\n }\n for (const type of typesPresent) {\n await this._client.revokeToken(\n user[type],\n type\n );\n logger2.info(`${type} revoked successfully`);\n if (type !== \"access_token\") {\n user[type] = null;\n }\n }\n await this.storeUser(user);\n logger2.debug(\"user stored\");\n await this._events.load(user);\n }\n /**\n * Enables silent renew for the `UserManager`.\n */\n startSilentRenew() {\n this._logger.create(\"startSilentRenew\");\n void this._silentRenewService.start();\n }\n /**\n * Disables silent renew for the `UserManager`.\n */\n stopSilentRenew() {\n this._silentRenewService.stop();\n }\n get _userStoreKey() {\n return `user:${this.settings.authority}:${this.settings.client_id}`;\n }\n async _loadUser() {\n const logger2 = this._logger.create(\"_loadUser\");\n const storageString = await this.settings.userStore.get(this._userStoreKey);\n if (storageString) {\n logger2.debug(\"user storageString loaded\");\n return User.fromStorageString(storageString);\n }\n logger2.debug(\"no user storageString\");\n return null;\n }\n async storeUser(user) {\n const logger2 = this._logger.create(\"storeUser\");\n if (user) {\n logger2.debug(\"storing user\");\n const storageString = user.toStorageString();\n await this.settings.userStore.set(this._userStoreKey, storageString);\n } else {\n this._logger.debug(\"removing user\");\n await this.settings.userStore.remove(this._userStoreKey);\n if (this.settings.dpop) {\n await this.settings.dpop.store.remove(this.settings.client_id);\n }\n }\n }\n /**\n * Removes stale state entries in storage for incomplete authorize requests.\n */\n async clearStaleState() {\n await this._client.clearStaleState();\n }\n /**\n * Dynamically generates a DPoP proof for a given user, URL and optional Http method.\n * This method is useful when you need to make a request to a resource server\n * with fetch or similar, and you need to include a DPoP proof in a DPoP header.\n * @param url - The URL to generate the DPoP proof for\n * @param user - The user to generate the DPoP proof for\n * @param httpMethod - Optional, defaults to \"GET\"\n * @param nonce - Optional nonce provided by the resource server\n *\n * @returns A promise containing the DPoP proof or undefined if DPoP is not enabled/no user is found.\n */\n async dpopProof(url, user, httpMethod, nonce) {\n var _a, _b;\n const dpopState = await ((_b = (_a = this.settings.dpop) == null ? void 0 : _a.store) == null ? void 0 : _b.get(this.settings.client_id));\n if (dpopState) {\n return await CryptoUtils.generateDPoPProof({\n url,\n accessToken: user == null ? void 0 : user.access_token,\n httpMethod,\n keyPair: dpopState.keys,\n nonce\n });\n }\n return void 0;\n }\n async generateDPoPJkt(dpopSettings) {\n let dpopState = await dpopSettings.store.get(this.settings.client_id);\n if (!dpopState) {\n const dpopKeys = await CryptoUtils.generateDPoPKeys();\n dpopState = new DPoPState(dpopKeys);\n await dpopSettings.store.set(this.settings.client_id, dpopState);\n }\n return await CryptoUtils.generateDPoPJkt(dpopState.keys);\n }\n};\n\n// package.json\nvar version = \"3.4.1\";\n\n// src/Version.ts\nvar Version = version;\n\n// src/IndexedDbDPoPStore.ts\nvar IndexedDbDPoPStore = class {\n constructor() {\n this._dbName = \"oidc\";\n this._storeName = \"dpop\";\n }\n async set(key, value) {\n const store = await this.createStore(this._dbName, this._storeName);\n await store(\"readwrite\", (str) => {\n str.put(value, key);\n return this.promisifyRequest(str.transaction);\n });\n }\n async get(key) {\n const store = await this.createStore(this._dbName, this._storeName);\n return await store(\"readonly\", (str) => {\n return this.promisifyRequest(str.get(key));\n });\n }\n async remove(key) {\n const item = await this.get(key);\n const store = await this.createStore(this._dbName, this._storeName);\n await store(\"readwrite\", (str) => {\n return this.promisifyRequest(str.delete(key));\n });\n return item;\n }\n async getAllKeys() {\n const store = await this.createStore(this._dbName, this._storeName);\n return await store(\"readonly\", (str) => {\n return this.promisifyRequest(str.getAllKeys());\n });\n }\n promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n request.onabort = request.onerror = () => reject(request.error);\n });\n }\n async createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const db = await this.promisifyRequest(request);\n return async (txMode, callback) => {\n const tx = db.transaction(storeName, txMode);\n const store = tx.objectStore(storeName);\n return await callback(store);\n };\n }\n};\nexport {\n AccessTokenEvents,\n CheckSessionIFrame,\n DPoPState,\n ErrorResponse,\n ErrorTimeout,\n InMemoryWebStorage,\n IndexedDbDPoPStore,\n Log,\n Logger,\n MetadataService,\n OidcClient,\n OidcClientSettingsStore,\n SessionMonitor,\n SigninResponse,\n SigninState,\n SignoutResponse,\n State,\n User,\n UserManager,\n UserManagerSettingsStore,\n Version,\n WebStorageStateStore\n};\n//# sourceMappingURL=oidc-client-ts.js.map\n","// src/AuthContext.ts\nimport React from \"react\";\nvar AuthContext = React.createContext(void 0);\nAuthContext.displayName = \"AuthContext\";\n\n// src/AuthProvider.tsx\nimport { UserManager } from \"oidc-client-ts\";\nimport React2 from \"react\";\n\n// src/AuthState.ts\nvar initialAuthState = {\n isLoading: true,\n isAuthenticated: false\n};\n\n// src/reducer.ts\nvar reducer = (state, action) => {\n switch (action.type) {\n case \"INITIALISED\":\n case \"USER_LOADED\":\n return {\n ...state,\n user: action.user,\n isLoading: false,\n isAuthenticated: action.user ? !action.user.expired : false,\n error: void 0\n };\n case \"USER_SIGNED_OUT\":\n case \"USER_UNLOADED\":\n return {\n ...state,\n user: void 0,\n isAuthenticated: false\n };\n case \"NAVIGATOR_INIT\":\n return {\n ...state,\n isLoading: true,\n activeNavigator: action.method\n };\n case \"NAVIGATOR_CLOSE\":\n return {\n ...state,\n isLoading: false,\n activeNavigator: void 0\n };\n case \"ERROR\": {\n const error = action.error;\n error[\"toString\"] = () => `${error.name}: ${error.message}`;\n return {\n ...state,\n isLoading: false,\n error\n };\n }\n default: {\n const innerError = new TypeError(`unknown type ${action[\"type\"]}`);\n const error = {\n name: innerError.name,\n message: innerError.message,\n innerError,\n stack: innerError.stack,\n source: \"unknown\"\n };\n error[\"toString\"] = () => `${error.name}: ${error.message}`;\n return {\n ...state,\n isLoading: false,\n error\n };\n }\n }\n};\n\n// src/utils.ts\nvar hasAuthParams = (location = window.location) => {\n let searchParams = new URLSearchParams(location.search);\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) && searchParams.get(\"state\")) {\n return true;\n }\n searchParams = new URLSearchParams(location.hash.replace(\"#\", \"?\"));\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) && searchParams.get(\"state\")) {\n return true;\n }\n return false;\n};\nvar signinError = normalizeErrorFn(\"signinCallback\", \"Sign-in failed\");\nvar signoutError = normalizeErrorFn(\"signoutCallback\", \"Sign-out failed\");\nvar renewSilentError = normalizeErrorFn(\"renewSilent\", \"Renew silent failed\");\nfunction normalizeError(error, fallbackMessage) {\n return {\n name: stringFieldOf(error, \"name\", () => \"Error\"),\n message: stringFieldOf(error, \"message\", () => fallbackMessage),\n stack: stringFieldOf(error, \"stack\", () => new Error().stack),\n innerError: error\n };\n}\nfunction normalizeErrorFn(source, fallbackMessage) {\n return (error) => {\n return {\n ...normalizeError(error, fallbackMessage),\n source\n };\n };\n}\nfunction stringFieldOf(element, fieldName, or) {\n if (element && typeof element === \"object\") {\n const value = element[fieldName];\n if (typeof value === \"string\") {\n return value;\n }\n }\n return or();\n}\n\n// src/AuthProvider.tsx\nvar userManagerContextKeys = [\n \"clearStaleState\",\n \"querySessionStatus\",\n \"revokeTokens\",\n \"startSilentRenew\",\n \"stopSilentRenew\"\n];\nvar navigatorKeys = [\n \"signinPopup\",\n \"signinSilent\",\n \"signinRedirect\",\n \"signinResourceOwnerCredentials\",\n \"signoutPopup\",\n \"signoutRedirect\",\n \"signoutSilent\"\n];\nvar unsupportedEnvironment = (fnName) => () => {\n throw new Error(\n `UserManager#${fnName} was called from an unsupported context. If this is a server-rendered page, defer this call with useEffect() or pass a custom UserManager implementation.`\n );\n};\nvar UserManagerImpl = typeof window === \"undefined\" ? null : UserManager;\nvar AuthProvider = (props) => {\n const {\n children,\n onSigninCallback,\n skipSigninCallback,\n matchSignoutCallback,\n onSignoutCallback,\n onRemoveUser,\n userManager: userManagerProp = null,\n ...userManagerSettings\n } = props;\n const [userManager] = React2.useState(() => {\n return userManagerProp != null ? userManagerProp : UserManagerImpl ? new UserManagerImpl(userManagerSettings) : { settings: userManagerSettings };\n });\n const [state, dispatch] = React2.useReducer(reducer, initialAuthState);\n const userManagerContext = React2.useMemo(\n () => Object.assign(\n {\n settings: userManager.settings,\n events: userManager.events\n },\n Object.fromEntries(\n userManagerContextKeys.map((key) => {\n var _a, _b;\n return [\n key,\n (_b = (_a = userManager[key]) == null ? void 0 : _a.bind(userManager)) != null ? _b : unsupportedEnvironment(key)\n ];\n })\n ),\n Object.fromEntries(\n navigatorKeys.map((key) => [\n key,\n userManager[key] ? async (args) => {\n dispatch({\n type: \"NAVIGATOR_INIT\",\n method: key\n });\n try {\n return await userManager[key](args);\n } catch (error) {\n dispatch({\n type: \"ERROR\",\n error: {\n ...normalizeError(error, `Unknown error while executing ${key}(...).`),\n source: key,\n args\n }\n });\n return null;\n } finally {\n dispatch({ type: \"NAVIGATOR_CLOSE\" });\n }\n } : unsupportedEnvironment(key)\n ])\n )\n ),\n [userManager]\n );\n const didInitialize = React2.useRef(false);\n React2.useEffect(() => {\n if (!userManager || didInitialize.current) {\n return;\n }\n didInitialize.current = true;\n void (async () => {\n try {\n let user = null;\n if (hasAuthParams() && !skipSigninCallback) {\n user = await userManager.signinCallback();\n if (onSigninCallback) await onSigninCallback(user);\n }\n user = !user ? await userManager.getUser() : user;\n dispatch({ type: \"INITIALISED\", user });\n } catch (error) {\n dispatch({\n type: \"ERROR\",\n error: signinError(error)\n });\n }\n try {\n if (matchSignoutCallback && matchSignoutCallback(userManager.settings)) {\n const resp = await userManager.signoutCallback();\n if (onSignoutCallback) await onSignoutCallback(resp);\n }\n } catch (error) {\n dispatch({\n type: \"ERROR\",\n error: signoutError(error)\n });\n }\n })();\n }, [userManager, skipSigninCallback, onSigninCallback, onSignoutCallback, matchSignoutCallback]);\n React2.useEffect(() => {\n if (!userManager) return void 0;\n const handleUserLoaded = (user) => {\n dispatch({ type: \"USER_LOADED\", user });\n };\n userManager.events.addUserLoaded(handleUserLoaded);\n const handleUserUnloaded = () => {\n dispatch({ type: \"USER_UNLOADED\" });\n };\n userManager.events.addUserUnloaded(handleUserUnloaded);\n const handleUserSignedOut = () => {\n dispatch({ type: \"USER_SIGNED_OUT\" });\n };\n userManager.events.addUserSignedOut(handleUserSignedOut);\n const handleSilentRenewError = (error) => {\n dispatch({\n type: \"ERROR\",\n error: renewSilentError(error)\n });\n };\n userManager.events.addSilentRenewError(handleSilentRenewError);\n return () => {\n userManager.events.removeUserLoaded(handleUserLoaded);\n userManager.events.removeUserUnloaded(handleUserUnloaded);\n userManager.events.removeUserSignedOut(handleUserSignedOut);\n userManager.events.removeSilentRenewError(handleSilentRenewError);\n };\n }, [userManager]);\n const removeUser = React2.useCallback(async () => {\n if (!userManager) unsupportedEnvironment(\"removeUser\");\n await userManager.removeUser();\n if (onRemoveUser) await onRemoveUser();\n }, [userManager, onRemoveUser]);\n const contextValue = React2.useMemo(() => {\n return {\n ...state,\n ...userManagerContext,\n removeUser\n };\n }, [state, userManagerContext, removeUser]);\n return /* @__PURE__ */ React2.createElement(AuthContext.Provider, { value: contextValue }, children);\n};\n\n// src/useAuth.ts\nimport React3 from \"react\";\nvar useAuth = () => {\n const context = React3.useContext(AuthContext);\n if (!context) {\n console.warn(\"AuthProvider context is undefined, please verify you are calling useAuth() as child of a <AuthProvider> component.\");\n }\n return context;\n};\n\n// src/useAutoSignin.ts\nimport React4 from \"react\";\nvar useAutoSignin = ({ signinMethod = \"signinRedirect\" } = {}) => {\n const auth = useAuth();\n const [hasTriedSignin, setHasTriedSignin] = React4.useState(false);\n const shouldAttemptSignin = React4.useMemo(() => !hasAuthParams() && !auth.isAuthenticated && !auth.activeNavigator && !auth.isLoading && !hasTriedSignin, [auth.activeNavigator, auth.isAuthenticated, auth.isLoading, hasTriedSignin]);\n React4.useEffect(() => {\n if (shouldAttemptSignin) {\n switch (signinMethod) {\n case \"signinPopup\":\n void auth.signinPopup();\n break;\n case \"signinRedirect\":\n default:\n void auth.signinRedirect();\n break;\n }\n setHasTriedSignin(true);\n }\n }, [auth, hasTriedSignin, shouldAttemptSignin, signinMethod]);\n return {\n isLoading: auth.isLoading,\n isAuthenticated: auth.isAuthenticated,\n error: auth.error\n };\n};\n\n// src/withAuth.tsx\nimport React5 from \"react\";\nfunction withAuth(Component) {\n const displayName = `withAuth(${Component.displayName || Component.name})`;\n const C = (props) => {\n const auth = useAuth();\n return /* @__PURE__ */ React5.createElement(Component, { ...props, auth });\n };\n C.displayName = displayName;\n return C;\n}\n\n// src/withAuthenticationRequired.tsx\nimport React6 from \"react\";\nvar withAuthenticationRequired = (Component, options = {}) => {\n const { OnRedirecting = () => /* @__PURE__ */ React6.createElement(React6.Fragment, null), onBeforeSignin, signinRedirectArgs } = options;\n const displayName = `withAuthenticationRequired(${Component.displayName || Component.name})`;\n const C = (props) => {\n const auth = useAuth();\n React6.useEffect(() => {\n if (hasAuthParams() || auth.isLoading || auth.activeNavigator || auth.isAuthenticated) {\n return;\n }\n void (async () => {\n if (onBeforeSignin) await onBeforeSignin();\n await auth.signinRedirect(signinRedirectArgs);\n })();\n }, [auth.isLoading, auth.isAuthenticated, auth]);\n return auth.isAuthenticated ? /* @__PURE__ */ React6.createElement(Component, { ...props }) : OnRedirecting();\n };\n C.displayName = displayName;\n return C;\n};\nexport {\n AuthContext,\n AuthProvider,\n hasAuthParams,\n useAuth,\n useAutoSignin,\n withAuth,\n withAuthenticationRequired\n};\n//# sourceMappingURL=react-oidc-context.js.map\n","const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nconst supportsRequestInitExt = () => {\n return typeof process === \"object\" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;\n};\nfunction randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\nfunction createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n headers: baseHeaders,\n requestInitExt = void 0,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n let querySerializer = typeof globalQuerySerializer === \"function\" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer = typeof requestQuerySerializer === \"function\" ? requestQuerySerializer : createQuerySerializer({\n ...typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {},\n ...requestQuerySerializer\n });\n }\n const serializedBody = body === void 0 ? void 0 : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header)\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData ? {} : {\n \"Content-Type\": \"application/json\"\n },\n baseHeaders,\n headers,\n params.header\n );\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders\n };\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer }),\n requestInit\n );\n let response;\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n if (finalMiddlewares.length) {\n id = randomID();\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n if (!response) {\n try {\n response = await fetch(request, requestInitExt);\n } catch (error2) {\n let errorAfterMiddleware = error2;\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Response) {\n errorAfterMiddleware = void 0;\n response = result;\n break;\n }\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n if (response.status === 204 || request.method === \"HEAD\" || response.headers.get(\"Content-Length\") === \"0\") {\n return response.ok ? { data: void 0, response } : { error: void 0, response };\n }\n if (response.ok) {\n if (parseAs === \"stream\") {\n return { data: response.body, response };\n }\n return { data: await response[parseAs](), response };\n }\n let error = await response.text();\n try {\n error = JSON.parse(error);\n } catch {\n }\n return { error, response };\n }\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n }\n };\n}\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\nfunction wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n function Client() {\n }\n Client.prototype = proxy;\n const client = new Client();\n handler.client = client;\n return client;\n}\nfunction createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\nfunction serializePrimitiveParam(name, value, options) {\n if (value === void 0 || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\"\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\nfunction serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner = {\n simple: \",\",\n label: \".\",\n matrix: \";\"\n }[options.style] || \"&\";\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final2 = values.join(\",\");\n switch (options.style) {\n case \"form\": {\n return `${name}=${final2}`;\n }\n case \"label\": {\n return `.${final2}`;\n }\n case \"matrix\": {\n return `;${name}=${final2}`;\n }\n default: {\n return final2;\n }\n }\n }\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\nfunction serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n if (options.explode === false) {\n const joiner2 = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\";\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${values.join(joiner)}` : values.join(joiner);\n}\nfunction createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === void 0 || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\nfunction defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\nfunction defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType = headers.get instanceof Function ? headers.get(\"Content-Type\") ?? headers.get(\"content-type\") : headers[\"Content-Type\"] ?? headers[\"content-type\"];\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\nfunction createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = defaultPathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\nfunction mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== void 0) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\nfunction removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n\nexport { createFinalURL, createPathBasedClient, createQuerySerializer, createClient as default, defaultBodySerializer, defaultPathSerializer, mergeHeaders, randomID, removeTrailingSlash, serializeArrayParam, serializeObjectParam, serializePrimitiveParam, wrapAsPathBasedClient };\n//# sourceMappingURL=index.mjs.map\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateUserBody = {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n phone?: string;\n document?: number;\n gender?: 'male' | 'female' | 'other';\n birthdate?: string;\n};\n\ntype UpdateUserDto = components['schemas']['UpdateUserDto'];\n\ntype GetUsersParams = {\n email?: string;\n document?: number;\n only_students?: boolean;\n institution_id?: string;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createUserService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get current authenticated user\n */\n getMe() {\n return apiClient.GET('/users/me');\n },\n\n /**\n * List all users with optional filters\n */\n getUsers(params?: GetUsersParams) {\n return apiClient.GET('/users', {\n params: { query: params },\n });\n },\n\n /**\n * Get user by ID\n */\n getUserById(id: string) {\n return apiClient.GET('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new user\n */\n createUser(body: CreateUserBody) {\n return apiClient.POST('/users', {\n body,\n });\n },\n\n /**\n * Update user information\n */\n updateUser(id: string, body: UpdateUserDto) {\n return apiClient.PATCH('/users/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete user\n */\n deleteUser(id: string) {\n return apiClient.DELETE('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's groups\n */\n getUserGroups(id: string) {\n return apiClient.GET('/users/{id}/groups', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's certificates\n */\n getUserCertificates(id: string) {\n return apiClient.GET('/users/{id}/certificates', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's institutions\n */\n getUserInstitutions(id: string) {\n return apiClient.GET('/users/{id}/institutions', {\n params: { path: { id } },\n });\n },\n\n /**\n * Sync user with Keycloak\n */\n syncUser(id: string) {\n return apiClient.POST('/users/{id}/sync', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type UserService = ReturnType<typeof createUserService>;\n","import type { AcademeApiClient } from './index';\nimport type { components, paths } from '../types/academe-api';\n\ntype CreateInstitutionGroupDto = components['schemas']['CreateInstitutionGroupDto'];\ntype UpdateInstitutionGroupDto = components['schemas']['UpdateInstitutionGroupDto'];\ntype CreateInstitutionClassroomDto = components['schemas']['CreateInstitutionClassroomDto'];\ntype UpdateInstitutionClassroomDto = components['schemas']['UpdateInstitutionClassroomDto'];\ntype CreateInstitutionRegistrationDto = components['schemas']['CreateInstitutionRegistrationDto'];\ntype UpdateInstitutionRegistrationDto = components['schemas']['UpdateInstitutionRegistrationDto'];\ntype AssignClassroomDto = components['schemas']['AssignClassroomDto'];\n\n// Extract query parameters type directly from API path definition\ntype GetInstitutionUsersQuery = paths['/institutions/{institutionId}/users']['get']['parameters']['query'];\n\nexport function createInstitutionService(apiClient: AcademeApiClient) {\n return {\n getAll() {\n return apiClient.GET('/institutions');\n },\n getById(id: string) {\n return apiClient.GET('/institutions/{id}', { params: { path: { id } } });\n },\n\n // Institution Groups\n getGroups(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n });\n },\n addGroup(institutionId: string, data: CreateInstitutionGroupDto) {\n return apiClient.POST('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n removeGroup(institutionId: string, groupId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n });\n },\n updateGroup(institutionId: string, groupId: string, data: UpdateInstitutionGroupDto) {\n return apiClient.PATCH('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n body: data,\n });\n },\n // Institution Classrooms\n getClassrooms(institutionId: string, options?: { includeUserCount?: boolean }) {\n return apiClient.GET('/institutions/{institutionId}/classrooms', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n getClassroomById(institutionId: string, classroomId: string) {\n return apiClient.GET('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n addClassroom(institutionId: string, data: CreateInstitutionClassroomDto) {\n return apiClient.POST('/institutions/{institutionId}/classrooms', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateClassroom(institutionId: string, classroomId: string, data: UpdateInstitutionClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n body: data,\n });\n },\n removeClassroom(institutionId: string, classroomId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n\n // Institution Users (list all users with filters)\n getUsers(\n institutionId: string,\n options?: GetInstitutionUsersQuery\n ) {\n return apiClient.GET('/institutions/{institutionId}/users', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n\n // Institution Registrations (Users in Institution)\n getRegistrations(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n });\n },\n getRegistrationById(institutionId: string, registrationId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getRegistrationByUserId(institutionId: string, userId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/user/{userId}', {\n params: { path: { institutionId, userId } },\n });\n },\n registerUser(institutionId: string, data: CreateInstitutionRegistrationDto) {\n return apiClient.POST('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateRegistration(institutionId: string, registrationId: string, data: UpdateInstitutionRegistrationDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n assignUserToClassroom(institutionId: string, registrationId: string, data: AssignClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}/classroom', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n removeRegistration(institutionId: string, registrationId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getGroupUsers(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups/users', {\n params: { path: { institutionId } },\n });\n },\n };\n}\n\nexport type InstitutionService = ReturnType<typeof createInstitutionService>;\n","import type { AcademeApiClient } from './index';\n\ntype GetDashboardParams = {\n institutionId?: string;\n};\n\ntype GetRecentActivitiesParams = {\n period?: '7days' | '30days' | 'all';\n};\n\ntype GetTopStudentsParams = {\n filterType: 'nota' | 'engajamento' | 'conclusao';\n year?: number;\n};\n\nexport function createReportService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get dashboard data (global)\n * Returns aggregated dashboard data for all institutions (requires admin permission)\n */\n getDashboard(params?: GetDashboardParams) {\n return apiClient.GET('/reports/dashboard', {\n params: { query: params },\n });\n },\n\n /**\n * Get dashboard data for specific institution\n * Returns aggregated dashboard data for a specific institution\n */\n getDashboardByInstitution(id: string) {\n return apiClient.GET('/reports/dashboard/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get courses distribution by area (global)\n * Returns distribution of course completions by area/category\n */\n getCoursesByArea() {\n return apiClient.GET('/reports/courses-by-area');\n },\n\n /**\n * Get courses distribution by area for specific institution\n * Returns distribution of course completions by area/category for an institution\n */\n getCoursesByAreaByInstitution(id: string) {\n return apiClient.GET('/reports/courses-by-area/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get adhesion rate (global)\n * Returns adhesion rate (unique students who accessed) per month for the last 6 months\n */\n getAdhesionRate() {\n return apiClient.GET('/reports/adhesion-rate');\n },\n\n /**\n * Get adhesion rate for specific institution\n * Returns adhesion rate for an institution for the last 6 months\n */\n getAdhesionRateByInstitution(id: string) {\n return apiClient.GET('/reports/adhesion-rate/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get recent activities (global)\n * Returns recent student activities (certificates issued and courses started)\n */\n getRecentActivities(params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities', {\n params: { query: params },\n });\n },\n\n /**\n * Get recent activities for specific institution\n * Returns recent student activities for an institution\n */\n getRecentActivitiesByInstitution(id: string, params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n\n /**\n * Get top students (global)\n * Returns top 10 students based on selected filter\n */\n getTopStudents(params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students', {\n params: { query: params },\n });\n },\n\n /**\n * Get top students for specific institution\n * Returns top 10 students for an institution based on selected filter\n */\n getTopStudentsByInstitution(id: string, params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n };\n}\n\nexport type ReportService = ReturnType<typeof createReportService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateClassroomDto = components['schemas']['CreateClassroomDto'];\ntype UpdateClassroomDto = components['schemas']['UpdateClassroomDto'];\n\ntype GetClassroomsByInstitutionParams = {\n page?: number;\n limit?: number;\n search?: string;\n};\n\nexport function createClassroomService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all classrooms\n */\n getAll() {\n return apiClient.GET('/classrooms');\n },\n\n /**\n * Get classroom by ID\n */\n getById(id: string) {\n return apiClient.GET('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get classrooms by institution ID\n */\n getByInstitution(institutionId: string, params?: GetClassroomsByInstitutionParams) {\n return apiClient.GET('/classrooms/institution/{id}', {\n params: {\n path: { id: institutionId },\n query: params,\n },\n });\n },\n\n /**\n * Create a new classroom\n */\n create(data: CreateClassroomDto) {\n return apiClient.POST('/classrooms', {\n body: data,\n });\n },\n\n /**\n * Update classroom\n */\n update(id: string, data: UpdateClassroomDto) {\n return apiClient.PATCH('/classrooms/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete classroom\n */\n delete(id: string) {\n return apiClient.DELETE('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ClassroomService = ReturnType<typeof createClassroomService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateOrganizationDto = components['schemas']['CreateOrganizationDto'];\ntype UpdateOrganizationDto = components['schemas']['UpdateOrganizationDto'];\n\ntype GetOrganizationsParams = {\n name?: string;\n type?: string;\n isActive?: boolean;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createOrganizationService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all organizations with optional filters\n */\n getAll(params?: GetOrganizationsParams) {\n return apiClient.GET('/organizations', {\n params: { query: params },\n });\n },\n\n /**\n * Get organization by ID\n */\n getById(id: string) {\n return apiClient.GET('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new organization\n */\n create(body: CreateOrganizationDto) {\n return apiClient.POST('/organizations', {\n body,\n });\n },\n\n /**\n * Update organization information\n */\n update(id: string, body: UpdateOrganizationDto) {\n return apiClient.PATCH('/organizations/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete organization\n * Note: Cannot delete organizations with children\n */\n delete(id: string) {\n return apiClient.DELETE('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type OrganizationService = ReturnType<typeof createOrganizationService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateSerieDto = components['schemas']['CreateSerieDto'];\ntype UpdateSerieDto = components['schemas']['UpdateSerieDto'];\n\nexport function createSerieService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all series\n */\n getAll() {\n return apiClient.GET('/series');\n },\n\n /**\n * Get serie by ID\n */\n getById(id: string) {\n return apiClient.GET('/series/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new serie\n */\n create(data: CreateSerieDto) {\n return apiClient.POST('/series', {\n body: data,\n });\n },\n\n /**\n * Update serie\n */\n update(id: string, data: UpdateSerieDto) {\n return apiClient.PATCH('/series/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete serie\n */\n delete(id: string) {\n return apiClient.DELETE('/series/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type SerieService = ReturnType<typeof createSerieService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateShiftDto = components['schemas']['CreateShiftDto'];\ntype UpdateShiftDto = components['schemas']['UpdateShiftDto'];\n\nexport function createShiftService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all shifts\n */\n getAll() {\n return apiClient.GET('/shifts');\n },\n\n /**\n * Get shift by ID\n */\n getById(id: string) {\n return apiClient.GET('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new shift\n */\n create(data: CreateShiftDto) {\n return apiClient.POST('/shifts', {\n body: data,\n });\n },\n\n /**\n * Update shift\n */\n update(id: string, data: UpdateShiftDto) {\n return apiClient.PATCH('/shifts/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete shift\n */\n delete(id: string) {\n return apiClient.DELETE('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ShiftService = ReturnType<typeof createShiftService>;\n\n\n\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateGuardianDto = components['schemas']['CreateGuardianDto'];\ntype UpdateGuardianDto = components['schemas']['UpdateGuardianDto'];\ntype AssignGuardianToUserDto = components['schemas']['AssignGuardianToUserDto'];\n\nexport function createGuardianService(apiClient: AcademeApiClient) {\n return {\n // List all guardians\n getAll() {\n return apiClient.GET('/guardians');\n },\n\n // Get guardian by ID\n getById(id: string) {\n return apiClient.GET('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Create a new guardian\n create(data: CreateGuardianDto) {\n return apiClient.POST('/guardians', {\n body: data,\n });\n },\n\n // Update guardian\n update(id: string, data: UpdateGuardianDto) {\n return apiClient.PATCH('/guardians/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n // Delete guardian\n delete(id: string) {\n return apiClient.DELETE('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Get guardian's users (students)\n getUsers(id: string) {\n return apiClient.GET('/guardians/{id}/users', {\n params: { path: { id } },\n });\n },\n\n // Assign guardian to user\n assignToUser(data: AssignGuardianToUserDto) {\n return apiClient.POST('/guardians/assign', {\n body: data,\n });\n },\n\n // Remove guardian from user\n removeFromUser(guardianId: string, userId: string) {\n return apiClient.DELETE('/guardians/{guardianId}/users/{userId}', {\n params: { path: { guardianId, userId } },\n });\n },\n };\n}\n\nexport type GuardianService = ReturnType<typeof createGuardianService>;\n\n","import type { paths } from '../types/academe-api';\nimport createClient from 'openapi-fetch';\nimport { createUserService, type UserService } from './UserService';\nimport { createInstitutionService, type InstitutionService } from './InstitutionService';\nimport { createReportService, type ReportService } from './ReportService';\nimport { createClassroomService, type ClassroomService } from './ClassroomService';\nimport { createOrganizationService, type OrganizationService } from './OrganizationService';\nimport { createSerieService, type SerieService } from './SerieService';\nimport { createShiftService, type ShiftService } from './ShiftService';\nimport { createGuardianService, type GuardianService } from './GuardianService';\n\nexport type AcademeApiClient = ReturnType<typeof createClient<paths>>;\n\nexport function createAcademeApiClient(baseUrl: string): AcademeApiClient {\n return createClient<paths>({ baseUrl });\n}\n\nexport interface AcademeServices {\n user: UserService;\n institution: InstitutionService;\n report: ReportService;\n classroom: ClassroomService;\n organization: OrganizationService;\n serie: SerieService;\n shift: ShiftService;\n guardian: GuardianService;\n}\n\nexport function createAcademeServices(apiClient: AcademeApiClient): AcademeServices {\n return {\n user: createUserService(apiClient),\n institution: createInstitutionService(apiClient),\n report: createReportService(apiClient),\n classroom: createClassroomService(apiClient),\n organization: createOrganizationService(apiClient),\n serie: createSerieService(apiClient),\n shift: createShiftService(apiClient),\n guardian: createGuardianService(apiClient),\n };\n}\n\nexport { createUserService, type UserService } from './UserService';\nexport { createReportService, type ReportService } from './ReportService';\nexport { createClassroomService, type ClassroomService } from './ClassroomService';\nexport { createOrganizationService, type OrganizationService } from './OrganizationService';\nexport { createSerieService, type SerieService } from './SerieService';\nexport { createShiftService, type ShiftService } from './ShiftService';\nexport { createGuardianService, type GuardianService } from './GuardianService';","export enum GLOBAL_ROLES {\n ADMIN_ACADEME = \"admin_academe\",\n SCHOOL_ADMIN = \"school_admin\",\n TEACHER = \"teacher\",\n STUDENT = \"student\",\n GUARDIAN = \"guardian\",\n}","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { AuthProvider, useAuth, AuthProviderProps } from \"react-oidc-context\";\nimport {\n createAcademeApiClient,\n createAcademeServices,\n type AcademeApiClient,\n type AcademeServices,\n} from \"../../services\";\nimport {\n SecurityContextType,\n SecurityProviderProps,\n AcademeKeycloakContextProps,\n AcademeUser,\n KeycloakUser,\n} from \"./types\";\nimport { GLOBAL_ROLES } from \"../../roles/global\";\nimport { jwtDecode } from \"jwt-decode\";\n\ninterface KeycloakProfile {\n realm_access?: {\n roles: string[];\n };\n resource_access?: {\n [key: string]: {\n roles: string[];\n };\n };\n email?: string;\n given_name?: string;\n family_name?: string;\n sub?: string;\n [key: string]: any;\n}\n\nexport const AcademeAuthProvider: React.FC<AcademeKeycloakContextProps> = ({\n realm,\n hubUrl,\n children,\n clientId,\n keycloakUrl,\n apiBaseUrl,\n initOptions,\n skipApiUserFetch,\n}) => {\n const oidcConfig: AuthProviderProps = {\n authority: `${keycloakUrl}/realms/${realm}`,\n client_id: clientId,\n redirect_uri: window.location.href,\n scope: \"openid profile email\",\n onSigninCallback: () => {\n window.history.replaceState({}, document.title, window.location.pathname);\n },\n automaticSilentRenew: true,\n };\n\n return (\n <AuthProvider {...oidcConfig}>\n <SecurityProvider\n hubUrl={hubUrl}\n apiBaseUrl={apiBaseUrl}\n skipApiUserFetch={skipApiUserFetch}\n >\n {children}\n </SecurityProvider>\n </AuthProvider>\n );\n};\n\nconst SecurityContext = createContext<SecurityContextType>({\n isInitialized: false,\n user: null,\n refreshUserData: async () => {},\n signOut: () => null,\n goToLogin: () => Promise.resolve(),\n hasSchool: () => false,\n hasRealmRole: () => false,\n hasClientRole: () => false,\n isAuthenticated: () => false,\n apiClient: null,\n services: null,\n accessToken: undefined,\n});\n\nconsole.log(\"hey!!\");\n\n// Função pura fora do componente - sem re-criação\nconst decodeAccessToken = (\n token: string | undefined\n): KeycloakProfile | null => {\n if (!token) return null;\n try {\n return jwtDecode<KeycloakProfile>(token);\n } catch (error) {\n console.error(\"Erro ao decodificar access_token:\", error);\n return null;\n }\n};\n\nconst SecurityProvider: React.FC<SecurityProviderProps> = ({\n apiBaseUrl = \"https://stg-api.academe.com.br\",\n skipApiUserFetch = false,\n children,\n}) => {\n const auth = useAuth();\n const [currentUser, setCurrentUser] = useState<AcademeUser | null>(null);\n const hasTriedSignInSilent = useRef(false);\n\n // Extrair valores primitivos do auth para usar como dependências estáveis\n const isAuthenticated = auth.isAuthenticated;\n const isLoading = auth.isLoading;\n const activeNavigator = auth.activeNavigator;\n const accessToken = auth.user?.access_token;\n const userProfile = auth.user?.profile;\n const userProfileSub = auth.user?.profile?.sub;\n\n // --- 1. Silent Check Inicial (Check SSO) ---\n useEffect(() => {\n if (\n !isAuthenticated &&\n !isLoading &&\n !activeNavigator &&\n !hasTriedSignInSilent.current\n ) {\n hasTriedSignInSilent.current = true;\n auth.signinSilent().catch((err: any) => {\n console.debug(\"Silent Check SSO: Usuário não logado ou erro:\", err);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAuthenticated, isLoading, activeNavigator]);\n\n // --- 2. Configuração de API e Services ---\n const apiClient = useMemo<AcademeApiClient>(() => {\n return createAcademeApiClient(apiBaseUrl);\n }, [apiBaseUrl]);\n\n const services = useMemo<AcademeServices>(() => {\n return createAcademeServices(apiClient);\n }, [apiClient]);\n\n const decodedAccessToken = useMemo(() => {\n return accessToken ? decodeAccessToken(accessToken) : null;\n }, [accessToken]);\n\n // Injeção do Token na API\n useEffect(() => {\n if (accessToken) {\n apiClient.use({\n onRequest({ request }) {\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return request;\n },\n });\n window.accessToken = accessToken;\n } else {\n window.accessToken = undefined;\n }\n }, [accessToken, apiClient]);\n\n // --- 3. Helpers de Usuário e Roles ---\n\n const getKeycloakUser = useCallback((): KeycloakUser => {\n const profile = userProfile as KeycloakProfile;\n return {\n email: profile?.email || \"\",\n name: profile?.given_name || \"\",\n lastName: profile?.family_name || \"\",\n };\n }, [userProfile]);\n\n const hasRealmRole = useCallback(\n (role: string): boolean => {\n return decodedAccessToken?.realm_access?.roles?.includes(role) ?? false;\n },\n [decodedAccessToken]\n );\n\n const hasClientRole = useCallback(\n (role: string, clientId?: string): boolean => {\n if (!decodedAccessToken) return false;\n if (!decodedAccessToken?.resource_access) return false;\n\n if (clientId) {\n return (\n decodedAccessToken.resource_access[clientId]?.roles?.includes(role) ??\n false\n );\n }\n\n return Object.values(decodedAccessToken.resource_access).some(\n (resource) => resource.roles?.includes(role)\n );\n },\n [decodedAccessToken]\n );\n\n // --- 4. Fetch de Dados do Usuário (Backend) ---\n useEffect(() => {\n let isMounted = true;\n\n const fetchUserData = async () => {\n if (isAuthenticated) {\n if (skipApiUserFetch) {\n if (isMounted) {\n const academeUser: AcademeUser = {\n keycloakUser: getKeycloakUser(),\n } as AcademeUser;\n setCurrentUser({ ...academeUser, id: userProfileSub });\n }\n return;\n }\n\n try {\n const response = await services.user.getMe();\n if (isMounted && response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n }\n } else if (!isAuthenticated && !isLoading) {\n if (isMounted) {\n setCurrentUser(null);\n }\n }\n };\n\n fetchUserData();\n\n return () => {\n isMounted = false;\n };\n }, [\n isAuthenticated,\n isLoading,\n getKeycloakUser,\n services,\n skipApiUserFetch,\n userProfileSub,\n ]);\n\n const refreshUserData = useCallback(async () => {\n if (isAuthenticated) {\n if (skipApiUserFetch) {\n const academeUser: AcademeUser = {\n keycloakUser: getKeycloakUser(),\n } as AcademeUser;\n setCurrentUser(academeUser);\n return;\n }\n\n try {\n const response = await services.user.getMe();\n if (response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error refreshing user data:\", error);\n }\n }\n }, [isAuthenticated, getKeycloakUser, services, skipApiUserFetch]);\n\n // --- 5. Ações de Auth ---\n\n const signOut = useCallback(() => {\n console.log(\"[KC LOGOUT!]\");\n setCurrentUser(null);\n auth.removeUser();\n auth.signoutRedirect({\n id_token_hint: auth.user?.id_token,\n });\n auth.clearStaleState();\n }, [auth]);\n\n const hasSchool = useCallback(\n (schoolId: string) => {\n if (hasRealmRole(GLOBAL_ROLES.ADMIN_ACADEME)) {\n return true;\n }\n\n return (\n currentUser?.institutionRegistrations?.some(\n (registration) => registration.institutionId === schoolId\n ) ?? false\n );\n },\n [hasRealmRole, currentUser?.institutionRegistrations]\n );\n\n const goToLogin = useCallback(() => {\n return auth.signinRedirect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Memoizar o value do context para evitar re-renders desnecessários\n const contextValue = useMemo<SecurityContextType>(\n () => ({\n isInitialized: !isLoading,\n user: currentUser,\n refreshUserData,\n signOut,\n isAuthenticated: () => isAuthenticated,\n hasSchool,\n goToLogin,\n hasRealmRole,\n hasClientRole,\n accessToken,\n apiClient,\n services,\n }),\n [\n isLoading,\n currentUser,\n refreshUserData,\n signOut,\n isAuthenticated,\n hasSchool,\n goToLogin,\n hasRealmRole,\n hasClientRole,\n accessToken,\n apiClient,\n services,\n ]\n );\n\n return (\n <SecurityContext.Provider value={contextValue}>\n {children}\n </SecurityContext.Provider>\n );\n};\n\ndeclare global {\n interface Window {\n accessToken?: string;\n }\n}\n\nexport const useAcademeAuth = () => useContext(SecurityContext);\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-10 animate-spin text-violet-500\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\nimport { Spinner } from \"../ui/spinner\";\n\ntype ProtectedAppProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedApp: React.FC<ProtectedAppProps> = ({\n children,\n requiredClientRoles,\n requiredRealmRoles,\n}) => {\n const {\n isInitialized,\n goToLogin,\n hasClientRole,\n hasRealmRole,\n isAuthenticated,\n } = useAcademeAuth();\n\n if (!isInitialized) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <Spinner className=\"size-10 text-violet-500\" />\n </div>\n );\n }\n\n if (!isAuthenticated()) {\n goToLogin();\n return <></>;\n }\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <h1 className=\"text-2xl font-bold\">\n Você não tem permissão para acessar esta página\n </h1>\n <span>\n Se você acredita que isso é um erro, entre em contato com o suporte.\n </span>\n </div>\n );\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedComponent: React.FC<ProtectedRouterProps> = ({\n children,\n requiredRealmRoles,\n requiredClientRoles,\n}) => {\n const { hasClientRole, hasRealmRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedRouter: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n unauthorizedMessage,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <h1>{unauthorizedMessage || \"unauthorized\"}</h1>;\n }\n\n return children;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export enum BACKOFFICE_ROLES {\n}","export enum DASHBOARD_ROLES {\n}","export enum APPLICATIONS_ROLES {\n ACCESS_NINA = \"Acesso nina\",\n ACCESS_MIKE = \"Acesso mike\",\n VIEW_WIDGET = \"Visualizar Widget\",\n}","/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/applications\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get all applications */\n get: {\n parameters: {\n query?: {\n /** @description Search applications by name */\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of applications */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"][];\n };\n };\n };\n };\n put?: never;\n /** Create a new application */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Sync applications with Keycloak */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Sync completed successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n message?: string;\n synced?: number;\n errors?: number;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get an application by ID */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application found */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n /** Delete an application */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n options?: never;\n head?: never;\n /** Update an application */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n trace?: never;\n };\n \"/auth/token\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Generate TheMembers JWT token for authenticated user\n * @description Generates a signed JWT token for TheMembers platform authentication.\n * This endpoint requires the user to be already authenticated with Keycloak.\n *\n * **Authentication Flow:**\n * 1. User must first authenticate with Keycloak\n * 2. Client sends request with Keycloak Bearer token in Authorization header\n * 3. Endpoint validates the token and extracts user information\n * 4. Endpoint returns TheMembers JWT token signed with RSA private key\n *\n * **Token Details:**\n * - Algorithm: RS256 (RSA with SHA-256)\n * - Payload includes user email and organization ID\n * - Token can be used for TheMembers platform authentication\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /**\n * @description JWT token signed with RS256 algorithm for TheMembers\n * @example eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\n */\n token?: string;\n /** @description User information from Keycloak */\n user?: {\n /** @example user@example.com */\n email?: string;\n /** @example John Doe */\n name?: string;\n /**\n * @description Keycloak user subject identifier\n * @example f6c4a7e9-8b3d-4f2e-9c1a-5d8e7f2a1b3c\n */\n sub?: string;\n };\n };\n };\n };\n };\n /** @description Bad Request - Token generation failed */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Token generation failed */\n message?: string;\n };\n };\n };\n /** @description Unauthorized - User not authenticated or invalid Keycloak token */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example User not authenticated */\n message?: string;\n };\n };\n };\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Failed to generate authentication token */\n message?: string;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all categories\n * @description Retrieve a list of all course categories\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of categories */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new category\n * @description Create a new course category\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get category by ID\n * @description Retrieve detailed information about a specific category\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete category\n * @description Remove a category from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Category deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update category\n * @description Update category information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all certificates\n * @description Retrieve a list of all certificates in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new certificate\n * @description Issue a new certificate for a user\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/certificates/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get certificate by ID\n * @description Retrieve detailed information about a specific certificate\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete certificate\n * @description Remove a certificate from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Certificate deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update certificate\n * @description Update certificate information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms\n * @description Retrieve a list of all classrooms\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new classroom\n * @description Create a new classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/institution/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classrooms by institution ID\n * @description Retrieve all active classrooms associated with a specific institution\n */\n get: {\n parameters: {\n query?: {\n /** @description Page number */\n page?: number;\n /** @description Number of items per page */\n limit?: number;\n /** @description Search by classroom name */\n search?: string;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms for the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classroom by ID\n * @description Retrieve detailed information about a specific classroom\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete classroom\n * @description Remove a classroom from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Classroom deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update classroom\n * @description Update classroom information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all courses\n * @description Retrieve a list of all courses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of courses */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new course\n * @description Create a new course in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCourseDto\"];\n };\n };\n responses: {\n /** @description Course created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course by ID\n * @description Retrieve detailed information about a specific course\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course\n * @description Remove a course from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course\n * @description Update course information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCourseDto\"];\n };\n };\n responses: {\n /** @description Course updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module\n * @description Create a new module for a course\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseId: string;\n /** @example Introduction to Programming */\n title: string;\n description?: string;\n /** @example 1 */\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module by ID\n * @description Retrieve detailed information about a specific course module\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module\n * @description Remove a module from a course\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module\n * @description Update course module information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n description?: string;\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules/lessons\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module lesson\n * @description Create a new lesson for a course module\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseModuleId: string;\n /** @example Variables and Data Types */\n title: string;\n content?: string;\n /** @example 1 */\n order?: number;\n /** @example 30 */\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/lessons/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module lesson by ID\n * @description Retrieve detailed information about a specific lesson\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module lesson\n * @description Remove a lesson from a course module\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module lesson\n * @description Update lesson information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n content?: string;\n order?: number;\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups\n * @description Retrieve a list of all groups in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new group\n * @description Create a new group in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group (e.g., student, teacher, admin) */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Group already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group by ID\n * @description Retrieve detailed information about a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete group\n * @description Remove a group from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group\n * @description Update group information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group users\n * @description Retrieve all users that belong to a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group roles\n * @description Retrieve all roles associated with a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign user to group\n * @description Add a user to a specific group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignUserToGroupDto\"];\n };\n };\n responses: {\n /** @description User assigned to group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User assigned to group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{groupId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove user from group\n * @description Remove a user from a specific group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Group ID */\n groupId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User removed from group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User removed from group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign role to group\n * @description Assign an existing role to a group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /**\n * Format: uuid\n * @description ID of the group to assign the role to\n */\n groupId: string;\n /**\n * Format: uuid\n * @description ID of the role to assign to the group\n */\n roleId: string;\n };\n };\n };\n responses: {\n /** @description Group role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Delete group role\n * @description Remove a role from a group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group role\n * @description Update an existing group role\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n groupId?: string;\n /** Format: uuid */\n roleId?: string;\n };\n };\n };\n responses: {\n /** @description Group role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all guardians\n * @description Retrieve a list of all guardians in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardians */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new guardian\n * @description Create a new guardian in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian by ID\n * @description Retrieve detailed information about a specific guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete guardian\n * @description Remove a guardian from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update guardian\n * @description Update guardian information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian's users\n * @description Retrieve all users (students) associated with a guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardian's users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign guardian to user\n * @description Link a guardian to a user (student)\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignGuardianToUserDto\"];\n };\n };\n responses: {\n /** @description Guardian assigned to user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian assigned to user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{guardianId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove guardian from user\n * @description Remove the link between a guardian and a user (student)\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Guardian ID */\n guardianId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian removed from user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian removed from user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms of an institution\n * @description Retrieve a list of all classrooms associated with a specific institution, including shift and serie information. Optionally includes user count for each classroom.\n */\n get: {\n parameters: {\n query?: {\n /** @description When true, includes a userCount field with the number of users registered in each classroom */\n includeUserCount?: boolean;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: (components[\"schemas\"][\"InstitutionClassroom\"] & {\n /**\n * @description Number of users registered in this classroom (only present when includeUserCount=true)\n * @example 25\n */\n userCount?: number;\n })[];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a classroom with an institution\n * @description Create a new association between a classroom and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms/{classroomId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific classroom of an institution\n * @description Retrieve details of a specific classroom associated with an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a classroom from an institution\n * @description Remove the association between a classroom and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution classroom\n * @description Update the status of a classroom in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Institution classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups of an institution\n * @description Retrieve a list of all groups associated with a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a group with an institution\n * @description Create a new association between a group and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Group associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/{groupId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove a group from an institution\n * @description Remove the association between a group and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution group quantity\n * @description Update the available quantity for a group in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Institution group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get all users of all groups in an institution\n * @description Retrieve all users from all groups associated with a specific institution.\n * Returns a map where keys are group IDs and values are arrays of users in each group.\n * This is more efficient than calling /groups/{id}/users multiple times.\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Users grouped by group ID */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n /**\n * @example {\n * \"status\": \"success\",\n * \"data\": {\n * \"group-uuid-1\": [\n * {\n * \"id\": \"user-uuid-1\",\n * \"firstName\": \"John\",\n * \"lastName\": \"Doe\",\n * \"email\": \"john@example.com\",\n * \"assignedAt\": \"2024-01-15T10:30:00Z\"\n * },\n * {\n * \"id\": \"user-uuid-2\",\n * \"firstName\": \"Jane\",\n * \"lastName\": \"Smith\",\n * \"email\": \"jane@example.com\",\n * \"assignedAt\": \"2024-01-16T14:20:00Z\"\n * }\n * ],\n * \"group-uuid-2\": [\n * {\n * \"id\": \"user-uuid-3\",\n * \"firstName\": \"Bob\",\n * \"lastName\": \"Wilson\",\n * \"email\": \"bob@example.com\",\n * \"assignedAt\": \"2024-01-17T09:15:00Z\"\n * }\n * ]\n * }\n * }\n */\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @description Map of group IDs to arrays of users */\n data?: {\n [key: string]: {\n /** Format: uuid */\n id?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n document?: string;\n phone?: string;\n isActive?: boolean;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string;\n }[];\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all registrations of an institution\n * @description Retrieve a list of all users registered in a specific institution, including classroom assignments\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution registrations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Register a user in an institution\n * @description Create a new registration for a user in an institution, optionally assigning them to a classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description User registered successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific registration\n * @description Retrieve details of a specific user registration in an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a registration\n * @description Remove a user's registration from an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration removed successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update a registration\n * @description Update a user's registration details in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description Registration updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/user/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get registration by user ID\n * @description Retrieve a user's registration in a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}/classroom\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Assign user to a classroom\n * @description Assign or change a user's classroom in an institution. Send null to remove assignment.\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom assigned successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all institutions\n * @description Retrieve a list of all educational institutions\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by institution name */\n name?: string;\n /** @description Filter by institution code */\n code?: string;\n /** @description Filter by organization ID */\n organizationId?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in institution name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new institution\n * @description Create a new educational institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get institution by ID\n * @description Retrieve detailed information about a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete institution\n * @description Remove an institution from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution\n * @description Update institution information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users from an institution\n * @description Retrieve a paginated list of all users registered in an institution with advanced filtering options\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by classroom (institution_classroom_id) */\n classroomId?: string;\n /** @description Filter by user active status */\n isActive?: boolean;\n /** @description Filter users by group type (e.g., student, teacher, school-director, other) */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** @description Filter users with certificates (true) or without (false) */\n hasCertificates?: boolean;\n /** @description Filter users with guardian (true) or without (false) */\n hasGuardian?: boolean;\n /** @description Search by email, first name, last name, or full name (case-insensitive) */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users from the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InstitutionUserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all organizations\n * @description Retrieve a list of all organizations with optional filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by organization name */\n name?: string;\n /** @description Filter by organization type (municipal, estadual, federal, privada) */\n type?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in organization name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of organizations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new organization\n * @description Create a new organization in the hierarchy\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get organization by ID\n * @description Retrieve detailed information about a specific organization\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete organization\n * @description Remove an organization from the system. Cannot delete organizations with children.\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update organization\n * @description Update organization information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/reports/dashboard\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data (global)\n * @description Retorna dados agregados do dashboard para todas as instituições (requer permissão de admin)\n */\n get: {\n parameters: {\n query?: {\n /** @description ID da instituição (opcional) */\n institutionId?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/dashboard/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data for specific institution\n * @description Retorna dados agregados do dashboard para uma instituição específica\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Institution not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area (global)\n * @description Retorna distribuição de realizações de cursos por área/categoria\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area for specific institution\n * @description Retorna distribuição de realizações de cursos por área/categoria para uma instituição\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate (global)\n * @description Retorna taxa de adesão (alunos únicos que acessaram) por mês nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate for specific institution\n * @description Retorna taxa de adesão para uma instituição nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities (global)\n * @description Retorna atividades recentes dos alunos (certificados emitidos e cursos iniciados)\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities for specific institution\n * @description Retorna atividades recentes dos alunos de uma instituição\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Invalid institution ID or period */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students (global)\n * @description Retorna top 10 alunos baseado em filtro escolhido\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students for specific institution\n * @description Retorna top 10 alunos de uma instituição baseado em filtro\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid institution ID, filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all roles\n * @description Retrieve a paginated list of roles with optional search filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Search roles by name */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new role\n * @description Create a new role in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateRoleDto\"];\n };\n };\n responses: {\n /** @description Role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Role already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role by ID\n * @description Retrieve detailed information about a specific role\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete role\n * @description Remove a role from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update role\n * @description Update role information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateRoleDto\"];\n };\n };\n responses: {\n /** @description Role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/roles/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role's groups\n * @description Retrieve all groups that have this role assigned\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups with this role */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync roles with Keycloak\n * @description Synchronize all roles with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Roles synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Roles synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all series\n * @description Retrieve a list of all educational series/grades\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of series */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new serie\n * @description Create a new educational serie/grade\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get serie by ID\n * @description Retrieve detailed information about a specific serie/grade\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete serie\n * @description Remove a serie from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Serie deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update serie\n * @description Update serie information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/shifts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all shifts\n * @description Retrieve a list of all institution shifts (manhã, tarde, noite)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of shifts */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new shift\n * @description Create a new institution shift\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/shifts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get shift by ID\n * @description Retrieve detailed information about a specific shift\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete shift\n * @description Remove a shift from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Shift deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update shift\n * @description Update shift information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/superset/dashboard/{dash_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Get Superset dashboard guest token\n * @description Generate a guest token to embed a Superset dashboard with optional filters\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The Superset dashboard ID */\n dash_id: string;\n };\n cookie?: never;\n };\n requestBody?: {\n content: {\n \"application/json\": {\n /**\n * @description Optional filters to apply to the dashboard (key-value pairs)\n * @example {\n * \"institution_id\": \"123\",\n * \"course_id\": \"456\"\n * }\n */\n filters?: {\n [key: string]: string;\n };\n };\n };\n };\n responses: {\n /** @description Dashboard token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /** @description Guest token for embedding the dashboard */\n token?: string;\n /** @description The dashboard ID */\n dashboardId?: string;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Forbidden - Insufficient permissions */\n 403: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Dashboard not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/me\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get current authenticated user\n * @description Returns the profile information of the currently authenticated user including:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations with detailed classroom information (institutionRegistrations)\n * - Institution data\n * - Classroom assignment (institutionClassroom)\n * - Classroom details (name, shift, serie)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Current user information with all related entities */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users\n * @description Retrieve a paginated list of users with optional search filters.\n * Each user includes detailed information about:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution details\n * - Classroom assignment via institutionClassroom\n * - Complete classroom information (name, shift, serie)\n * - Certificate count (certificatesCount)\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter users by email */\n email?: string;\n /** @description Filter users by document number */\n document?: number;\n /** @description Filter only users that are students */\n only_students?: boolean;\n /** @description Filter users by institution ID (only returns users registered in that institution) */\n institution_id?: string;\n /** @description Search users by name or email */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users with detailed institution and classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"UserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new user\n * @description Creates a new user following this flow:\n * 1. Creates the user in Keycloak with username, email, password, and profile information\n * 2. Retrieves the generated Keycloak user ID\n * 3. Creates the user in MongoDB using the Keycloak ID as the primary key\n *\n * Note: The user ID is automatically generated by Keycloak and should NOT be provided in the request.\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /**\n * @description Password for the user's Keycloak account\n * @example SecurePassword123!\n */\n password: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-15T00:00:00.000Z\n */\n birthdate?: string;\n };\n };\n };\n responses: {\n /** @description User created successfully in both Keycloak and MongoDB */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description User already exists (either in Keycloak or MongoDB) */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user by ID\n * @description Retrieve detailed information about a specific user including related data:\n * - User groups (userGroups) with group details\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution information (id, name, code, etc.)\n * - Classroom assignment (institutionClassroom)\n * - Complete classroom details including:\n * - Classroom name\n * - Shift (manhã, tarde, noite)\n * - Serie (grade level)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User information with all related entities including classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete user\n * @description Remove a user from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update user\n * @description Update user information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateUserDto\"];\n };\n };\n responses: {\n /** @description User updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/users/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's groups\n * @description Retrieve all groups that a user belongs to\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's certificates\n * @description Retrieve all certificates earned by a user\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's institutions\n * @description Retrieve all institutions where the user is registered\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync user with Keycloak\n * @description Synchronize user data with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n Error: {\n /** @example error */\n status?: string;\n /** @example Error message */\n message?: string;\n /** @example Detailed error information */\n errors?: string;\n };\n Success: {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n message?: string;\n };\n PaginationMeta: {\n /** @example 100 */\n total?: number;\n /** @example 1 */\n page?: number;\n /** @example 10 */\n limit?: number;\n /** @example 10 */\n totalPages?: number;\n };\n User: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: number | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description User's group associations */\n userGroups?: components[\"schemas\"][\"UserGroup\"][];\n /** @description User's guardian associations */\n userGuardians?: components[\"schemas\"][\"UserGuardian\"][];\n /** @description User's certificates */\n certificates?: components[\"schemas\"][\"Certificate\"][];\n /** @description User's institution registrations */\n institutionRegistrations?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n UpdateUserDto: {\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n Group: {\n /**\n * Format: uuid\n * @description Keycloak Group ID\n */\n id?: string;\n /** @example students */\n name?: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @example false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @example student\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateGroupDto: {\n /** @example students */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n UpdateGroupDto: {\n /** @example students */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n AssignUserToGroupDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n groupId: string;\n /** Format: uuid */\n assignedBy?: string;\n };\n UserGroup: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n groupId?: string;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n UserGuardian: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n guardianId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n guardian?: components[\"schemas\"][\"Guardian\"];\n };\n /** @description User with institution registration details (returned by GET /institutions/{institutionId}/users) */\n InstitutionUser: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: string | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /**\n * @description Indicates if the user is active\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /**\n * @description Number of certificates the user has\n * @example 5\n */\n certificatesCount?: number;\n /** @description User's guardian associations */\n userGuardians?: {\n /** Format: uuid */\n id?: string;\n guardian?: {\n /** Format: uuid */\n id?: string;\n /** @example Maria Silva */\n name?: string;\n /**\n * Format: email\n * @example maria@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n };\n }[];\n /** @description User's registration info in the institution */\n institutionRegistration?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the registration is active\n * @example true\n */\n isActive?: boolean;\n /** @description Classroom assignment details */\n institutionClassroom?: {\n /** Format: uuid */\n id?: string;\n classroom?: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** @description Grade level information */\n serie?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n } | null;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: {\n /** Format: uuid */\n id?: string;\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n } | null;\n } | null;\n } | null;\n };\n };\n InstitutionUserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionUser\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n InstitutionRegistration: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n institutionId?: string;\n /**\n * Format: uuid\n * @description ID of the institution classroom assignment\n */\n institutionClassroomId?: string | null;\n /**\n * @description Indicates if the user is active in the institution\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Institution details */\n institution?: components[\"schemas\"][\"Institution\"];\n /** @description Classroom assignment with complete details (classroom, shift, serie) */\n institutionClassroom?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n InstitutionClassroom: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the classroom is active\n * @example true\n */\n isActive?: boolean;\n /** Format: uuid */\n institutionId?: string;\n /** Format: uuid */\n classroomId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Complete classroom information including shift and serie */\n classroom?: components[\"schemas\"][\"Classroom\"];\n /**\n * @description Number of users registered in this classroom (only returned when includeUserCount=true)\n * @example 25\n */\n userCount?: number | null;\n };\n Role: {\n /**\n * Format: uuid\n * @description Keycloak Role ID\n */\n id?: string;\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string | null;\n /**\n * Format: uuid\n * @description Application ID if this is a client role\n */\n applicationId?: string | null;\n /** @description Application details if this is a client role */\n application?: components[\"schemas\"][\"Application\"];\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateRoleDto: {\n /** @example admin */\n name: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n /**\n * Format: uuid\n * @description Application ID to create this role as a client role (optional - if not provided, creates a realm role)\n * @example 123e4567-e89b-12d3-a456-426614174000\n */\n applicationId?: string;\n };\n UpdateRoleDto: {\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n };\n Institution: {\n /** Format: uuid */\n id?: string;\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /** Format: uri */\n logoUrl?: string | null;\n /** Format: uri */\n capaUrl?: string | null;\n /** Format: uuid */\n addressId?: string | null;\n /** Format: uuid */\n institutionRewardId?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Organization: {\n /** Format: uuid */\n id?: string;\n /** @example Municipal Education Department */\n name?: string;\n /** Format: uuid */\n parentId?: string | null;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n parent?: components[\"schemas\"][\"Organization\"];\n children?: components[\"schemas\"][\"Organization\"][];\n };\n CreateOrganizationDto: {\n /** @example Municipal Education Department */\n name: string;\n /**\n * Format: uuid\n * @description Parent organization ID (optional)\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n };\n UpdateOrganizationDto: {\n /** @example Municipal Education Department */\n name?: string;\n /**\n * Format: uuid\n * @description Parent organization ID\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n };\n Course: {\n /** Format: uuid */\n id?: string;\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string | null;\n quizId?: string | null;\n /** @example true */\n isActive?: boolean;\n /** @enum {string|null} */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\" | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Certificate: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n courseId?: string | null;\n /** Format: uuid */\n courseModuleId?: string | null;\n quizId?: string | null;\n quizTitle?: string | null;\n quizCategory?: string | null;\n attemptId?: string | null;\n attemptScore?: number | null;\n attemptPassed?: boolean | null;\n attemptTimeTakenInMinutes?: number | null;\n /** Format: date-time */\n attemptCompletedAt?: string | null;\n certificateId?: string | null;\n certificateNumber?: string | null;\n /** Format: date-time */\n certificateIssuedAt?: string | null;\n /** Format: uri */\n certificateDownloadUrl?: string | null;\n /** Format: date-time */\n dispatchedAt?: string | null;\n /** Format: date-time */\n insertedAt?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Guardian: {\n /** Format: uuid */\n id?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Address: {\n /** Format: uuid */\n id?: string;\n address?: string;\n number?: number | null;\n zip?: number | null;\n neighborhood?: string | null;\n city?: string;\n state?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Category: {\n /** Format: uuid */\n id?: string;\n /** @example Essential Skills */\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Classroom: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: components[\"schemas\"][\"Shift\"];\n /** @description Serie/grade level information */\n serie?: components[\"schemas\"][\"Serie\"];\n };\n Serie: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Shift: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Shift name in Portuguese\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Application: {\n /**\n * Format: uuid\n * @description Keycloak Client ID\n */\n id: string;\n /** @description Keycloak Client Code */\n code: string;\n /** @description Keycloak Client Name */\n name: string;\n /** @description Application description */\n description?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateApplicationDto: {\n /** @description Unique application code */\n code: string;\n /** @description Application name */\n name: string;\n /** @description Application description */\n description?: string;\n };\n UpdateApplicationDto: {\n /** @description Application name */\n name?: string;\n /** @description Application description */\n description?: string;\n };\n AuthenticatedUser: {\n /** @description Keycloak user ID */\n id?: string;\n /** @description User email address */\n email?: string;\n /** @description User first name */\n firstName?: string;\n /** @description User last name */\n lastName?: string;\n /** @description Username */\n username?: string;\n /** @description Email verification status */\n emailVerified?: boolean;\n /** @description User roles */\n roles?: string[];\n /** @description User groups */\n groups?: string[];\n };\n AuthTokenResponse: {\n /** @example success */\n status?: string;\n data?: {\n /** @description JWT token for TheMembers authentication */\n token?: string;\n user?: {\n email?: string;\n name?: string;\n sub?: string;\n };\n };\n };\n CreateInstitutionClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to associate with the institution\n */\n classroomId: string;\n /**\n * @description Whether the classroom is active in the institution\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionClassroomDto: {\n /** @description Whether the classroom is active in the institution */\n isActive?: boolean;\n };\n InstitutionGroup: {\n /**\n * Format: uuid\n * @description Unique identifier\n */\n id?: string;\n /**\n * Format: uuid\n * @description Institution ID\n */\n institutionId?: string;\n /**\n * Format: uuid\n * @description Group ID\n */\n groupId?: string;\n /** @description Available quantity for this group in the institution */\n availableQuantity?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n CreateInstitutionGroupDto: {\n /**\n * Format: uuid\n * @description Group ID to associate with the institution\n */\n groupId: string;\n /**\n * @description Available quantity for this group\n * @default 0\n */\n availableQuantity: number;\n };\n UpdateInstitutionGroupDto: {\n /** @description New available quantity for this group */\n availableQuantity: number;\n };\n CreateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description User ID to register in the institution\n */\n userId: string;\n /**\n * Format: uuid\n * @description Optional classroom ID to assign the user to\n */\n institutionClassroomId?: string | null;\n /**\n * @description Whether the registration is active\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove)\n */\n institutionClassroomId?: string | null;\n /** @description Whether the registration is active */\n isActive?: boolean;\n };\n AssignClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove assignment)\n */\n institutionClassroomId?: string | null;\n };\n StudentWithClass: {\n /** Format: uuid */\n _id?: string;\n name?: string;\n /** Format: email */\n email?: string;\n document?: string;\n /** Format: uuid */\n classId?: string;\n className?: string;\n };\n DashboardResponse: {\n totalAlunos?: number;\n listaAlunos?: components[\"schemas\"][\"StudentWithClass\"][];\n /** Format: float */\n taxaConclusao?: number;\n /** Format: float */\n taxaConclusaoMesAnterior?: number;\n /** Format: float */\n taxaConclusaoTrend?: number;\n /** Format: float */\n mediaEngajamento?: number;\n /** Format: float */\n mediaEngajamentoMesAnterior?: number;\n /** Format: float */\n mediaEngajamentoTrend?: number;\n aulasAssistidas?: number;\n aulasAssitidasMesAnterior?: number;\n /** Format: float */\n aulasAssitidasTrend?: number;\n };\n AreaData: {\n area?: string;\n /** Format: float */\n percentage?: number;\n count?: number;\n total?: number;\n };\n MonthlyLogin: {\n month?: string;\n count?: number;\n };\n AdhesionRateResponse: {\n monthlyLogins?: components[\"schemas\"][\"MonthlyLogin\"][];\n totalLogins?: number;\n period?: string;\n };\n RecentActivity: {\n studentName?: string;\n courseName?: string;\n /** @enum {string} */\n action?: \"iniciou_curso\" | \"emitiu_certificado\";\n activityText?: string;\n timestamp?: string;\n /** @enum {string} */\n activityType?: \"course_start\" | \"certificate\";\n };\n RecentActivitiesResponse: {\n activities?: components[\"schemas\"][\"RecentActivity\"][];\n totalActivities?: number;\n };\n TopStudent: {\n /** Format: uuid */\n studentId?: string;\n studentName?: string;\n /** Format: email */\n studentEmail?: string;\n rank?: number;\n /** Format: float */\n averageGrade?: number;\n /** Format: float */\n engagementRate?: number;\n /** Format: float */\n completionRate?: number;\n profileUrl?: string;\n };\n TopStudentsResponse: {\n students?: components[\"schemas\"][\"TopStudent\"][];\n /** @enum {string} */\n filterType?: \"nota\" | \"engajamento\" | \"conclusao\";\n totalStudents?: number;\n year?: number;\n };\n CreateUserDto: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id: string;\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserResponse: components[\"schemas\"][\"User\"];\n CreateInstitutionDto: {\n /** @example Academe Institution */\n name: string;\n /** @example SCH001 */\n code: string;\n /** @example 12.345.678/0001-90 */\n document: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents: number;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n UpdateInstitutionDto: {\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n CreateCourseDto: {\n /** @example Introduction to Programming */\n description: string;\n /** Format: uuid */\n categoryId: string;\n /** @example 40 */\n duration: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n UpdateCourseDto: {\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /** @example true */\n isActive?: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n CreateCertificateDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n courseId?: string;\n /** Format: uuid */\n courseModuleId?: string;\n quizId?: string;\n quizTitle?: string;\n quizCategory?: string;\n attemptId?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateId?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n };\n UpdateCertificateDto: {\n quizTitle?: string;\n quizCategory?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n /** Format: date-time */\n dispatchedAt?: string;\n };\n CreateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name: string;\n };\n UpdateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name?: string;\n };\n CreateCategoryDto: {\n /** @example Essential Skills */\n name: string;\n };\n UpdateCategoryDto: {\n /** @example Essential Skills */\n name?: string;\n };\n CreateClassroomDto: {\n /** @example Room 101 */\n name: string;\n /** Format: uuid */\n shiftId: string;\n /** Format: uuid */\n serieId: string;\n };\n UpdateClassroomDto: {\n /** @example Room 101 */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n };\n CreateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value: number;\n };\n UpdateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value?: number;\n };\n CreateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name: \"manhã\" | \"tarde\" | \"noite\";\n };\n UpdateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n };\n AssignGuardianToUserDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n guardianId: string;\n };\n RegisterUserToInstitutionDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n institutionId: string;\n };\n };\n responses: {\n /** @description Resource not found */\n NotFound: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Authentication required */\n Unauthorized: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Insufficient permissions */\n Forbidden: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Invalid request */\n BadRequest: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Internal server error */\n ServerError: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Resource already exists or conflict */\n Conflict: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n };\n parameters: {\n /** @description Resource ID */\n id: string;\n /** @description Page number */\n page: number;\n /** @description Items per page */\n limit: number;\n /** @description Search term */\n search: string;\n };\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type $defs = Record<string, never>;\nexport type operations = Record<string, never>;\n"],"names":["React","_jsx","React3","GLOBAL_ROLES","createContext","useState","useRef","useEffect","useMemo","useCallback","useContext","forwardRef","createElement","Loader2Icon","_jsxs","BACKOFFICE_ROLES","DASHBOARD_ROLES","APPLICATIONS_ROLES"],"mappings":"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","x_google_ignoreList":[0,2,3,4,5,17,18,19,20,21,22,28]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/Button/Button.tsx","../node_modules/jwt-decode/build/esm/index.js","../node_modules/oidc-client-ts/dist/esm/oidc-client-ts.js","../node_modules/react-oidc-context/dist/esm/react-oidc-context.js","../node_modules/openapi-fetch/dist/index.mjs","../src/services/UserService.ts","../src/services/InstitutionService.ts","../src/services/ReportService.ts","../src/services/ClassroomService.ts","../src/services/OrganizationService.ts","../src/services/SerieService.ts","../src/services/ShiftService.ts","../src/services/GuardianService.ts","../src/services/index.ts","../src/roles/global.ts","../src/context/SecurityProvider/index.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/spinner.tsx","../src/components/ProtectedApp/index.tsx","../src/components/ProtectedComponent/index.tsx","../src/components/ProtectedRouter/index.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/roles/backoffice.ts","../src/roles/dashboard.ts","../src/roles/applications.ts","../src/types/academe-api.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import React from 'react';\nimport clsx from 'clsx';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, children, ...props }, ref) => {\n const baseClasses = 'font-semibold rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'bg-transparent border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","// src/utils/Logger.ts\nvar nopLogger = {\n debug: () => void 0,\n info: () => void 0,\n warn: () => void 0,\n error: () => void 0\n};\nvar level;\nvar logger;\nvar Log = /* @__PURE__ */ ((Log2) => {\n Log2[Log2[\"NONE\"] = 0] = \"NONE\";\n Log2[Log2[\"ERROR\"] = 1] = \"ERROR\";\n Log2[Log2[\"WARN\"] = 2] = \"WARN\";\n Log2[Log2[\"INFO\"] = 3] = \"INFO\";\n Log2[Log2[\"DEBUG\"] = 4] = \"DEBUG\";\n return Log2;\n})(Log || {});\n((Log2) => {\n function reset() {\n level = 3 /* INFO */;\n logger = nopLogger;\n }\n Log2.reset = reset;\n function setLevel(value) {\n if (!(0 /* NONE */ <= value && value <= 4 /* DEBUG */)) {\n throw new Error(\"Invalid log level\");\n }\n level = value;\n }\n Log2.setLevel = setLevel;\n function setLogger(value) {\n logger = value;\n }\n Log2.setLogger = setLogger;\n})(Log || (Log = {}));\nvar Logger = class _Logger {\n constructor(_name) {\n this._name = _name;\n }\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n debug(...args) {\n if (level >= 4 /* DEBUG */) {\n logger.debug(_Logger._format(this._name, this._method), ...args);\n }\n }\n info(...args) {\n if (level >= 3 /* INFO */) {\n logger.info(_Logger._format(this._name, this._method), ...args);\n }\n }\n warn(...args) {\n if (level >= 2 /* WARN */) {\n logger.warn(_Logger._format(this._name, this._method), ...args);\n }\n }\n error(...args) {\n if (level >= 1 /* ERROR */) {\n logger.error(_Logger._format(this._name, this._method), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n throw(err) {\n this.error(err);\n throw err;\n }\n create(method) {\n const methodLogger = Object.create(this);\n methodLogger._method = method;\n methodLogger.debug(\"begin\");\n return methodLogger;\n }\n static createStatic(name, staticMethod) {\n const staticLogger = new _Logger(`${name}.${staticMethod}`);\n staticLogger.debug(\"begin\");\n return staticLogger;\n }\n static _format(name, method) {\n const prefix = `[${name}]`;\n return method ? `${prefix} ${method}:` : prefix;\n }\n /* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n // helpers for static class methods\n static debug(name, ...args) {\n if (level >= 4 /* DEBUG */) {\n logger.debug(_Logger._format(name), ...args);\n }\n }\n static info(name, ...args) {\n if (level >= 3 /* INFO */) {\n logger.info(_Logger._format(name), ...args);\n }\n }\n static warn(name, ...args) {\n if (level >= 2 /* WARN */) {\n logger.warn(_Logger._format(name), ...args);\n }\n }\n static error(name, ...args) {\n if (level >= 1 /* ERROR */) {\n logger.error(_Logger._format(name), ...args);\n }\n }\n /* eslint-enable @typescript-eslint/no-unsafe-enum-comparison */\n};\nLog.reset();\n\n// src/utils/JwtUtils.ts\nimport { jwtDecode } from \"jwt-decode\";\nvar JwtUtils = class {\n // IMPORTANT: doesn't validate the token\n static decode(token) {\n try {\n return jwtDecode(token);\n } catch (err) {\n Logger.error(\"JwtUtils.decode\", err);\n throw err;\n }\n }\n static async generateSignedJwt(header, payload, privateKey) {\n const encodedHeader = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(header)));\n const encodedPayload = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(payload)));\n const encodedToken = `${encodedHeader}.${encodedPayload}`;\n const signature = await window.crypto.subtle.sign(\n {\n name: \"ECDSA\",\n hash: { name: \"SHA-256\" }\n },\n privateKey,\n new TextEncoder().encode(encodedToken)\n );\n const encodedSignature = CryptoUtils.encodeBase64Url(new Uint8Array(signature));\n return `${encodedToken}.${encodedSignature}`;\n }\n static async generateSignedJwtWithHmac(header, payload, secretKey) {\n const encodedHeader = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(header)));\n const encodedPayload = CryptoUtils.encodeBase64Url(new TextEncoder().encode(JSON.stringify(payload)));\n const encodedToken = `${encodedHeader}.${encodedPayload}`;\n const signature = await window.crypto.subtle.sign(\n \"HMAC\",\n secretKey,\n new TextEncoder().encode(encodedToken)\n );\n const encodedSignature = CryptoUtils.encodeBase64Url(new Uint8Array(signature));\n return `${encodedToken}.${encodedSignature}`;\n }\n};\n\n// src/utils/CryptoUtils.ts\nvar UUID_V4_TEMPLATE = \"10000000-1000-4000-8000-100000000000\";\nvar toBase64 = (val) => btoa([...new Uint8Array(val)].map((chr) => String.fromCharCode(chr)).join(\"\"));\nvar _CryptoUtils = class _CryptoUtils {\n static _randomWord() {\n const arr = new Uint32Array(1);\n crypto.getRandomValues(arr);\n return arr[0];\n }\n /**\n * Generates RFC4122 version 4 guid\n */\n static generateUUIDv4() {\n const uuid = UUID_V4_TEMPLATE.replace(\n /[018]/g,\n (c) => (+c ^ _CryptoUtils._randomWord() & 15 >> +c / 4).toString(16)\n );\n return uuid.replace(/-/g, \"\");\n }\n /**\n * PKCE: Generate a code verifier\n */\n static generateCodeVerifier() {\n return _CryptoUtils.generateUUIDv4() + _CryptoUtils.generateUUIDv4() + _CryptoUtils.generateUUIDv4();\n }\n /**\n * PKCE: Generate a code challenge\n */\n static async generateCodeChallenge(code_verifier) {\n if (!crypto.subtle) {\n throw new Error(\"Crypto.subtle is available only in secure contexts (HTTPS).\");\n }\n try {\n const encoder = new TextEncoder();\n const data = encoder.encode(code_verifier);\n const hashed = await crypto.subtle.digest(\"SHA-256\", data);\n return toBase64(hashed).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n } catch (err) {\n Logger.error(\"CryptoUtils.generateCodeChallenge\", err);\n throw err;\n }\n }\n /**\n * Generates a base64-encoded string for a basic auth header\n */\n static generateBasicAuth(client_id, client_secret) {\n const encoder = new TextEncoder();\n const data = encoder.encode([client_id, client_secret].join(\":\"));\n return toBase64(data);\n }\n /**\n * Generates a hash of a string using a given algorithm\n * @param alg\n * @param message\n */\n static async hash(alg, message) {\n const msgUint8 = new TextEncoder().encode(message);\n const hashBuffer = await crypto.subtle.digest(alg, msgUint8);\n return new Uint8Array(hashBuffer);\n }\n /**\n * Generates a rfc7638 compliant jwk thumbprint\n * @param jwk\n */\n static async customCalculateJwkThumbprint(jwk) {\n let jsonObject;\n switch (jwk.kty) {\n case \"RSA\":\n jsonObject = {\n \"e\": jwk.e,\n \"kty\": jwk.kty,\n \"n\": jwk.n\n };\n break;\n case \"EC\":\n jsonObject = {\n \"crv\": jwk.crv,\n \"kty\": jwk.kty,\n \"x\": jwk.x,\n \"y\": jwk.y\n };\n break;\n case \"OKP\":\n jsonObject = {\n \"crv\": jwk.crv,\n \"kty\": jwk.kty,\n \"x\": jwk.x\n };\n break;\n case \"oct\":\n jsonObject = {\n \"crv\": jwk.k,\n \"kty\": jwk.kty\n };\n break;\n default:\n throw new Error(\"Unknown jwk type\");\n }\n const utf8encodedAndHashed = await _CryptoUtils.hash(\"SHA-256\", JSON.stringify(jsonObject));\n return _CryptoUtils.encodeBase64Url(utf8encodedAndHashed);\n }\n static async generateDPoPProof({\n url,\n accessToken,\n httpMethod,\n keyPair,\n nonce\n }) {\n let hashedToken;\n let encodedHash;\n const payload = {\n \"jti\": window.crypto.randomUUID(),\n \"htm\": httpMethod != null ? httpMethod : \"GET\",\n \"htu\": url,\n \"iat\": Math.floor(Date.now() / 1e3)\n };\n if (accessToken) {\n hashedToken = await _CryptoUtils.hash(\"SHA-256\", accessToken);\n encodedHash = _CryptoUtils.encodeBase64Url(hashedToken);\n payload.ath = encodedHash;\n }\n if (nonce) {\n payload.nonce = nonce;\n }\n try {\n const publicJwk = await crypto.subtle.exportKey(\"jwk\", keyPair.publicKey);\n const header = {\n \"alg\": \"ES256\",\n \"typ\": \"dpop+jwt\",\n \"jwk\": {\n \"crv\": publicJwk.crv,\n \"kty\": publicJwk.kty,\n \"x\": publicJwk.x,\n \"y\": publicJwk.y\n }\n };\n return await JwtUtils.generateSignedJwt(header, payload, keyPair.privateKey);\n } catch (err) {\n if (err instanceof TypeError) {\n throw new Error(`Error exporting dpop public key: ${err.message}`);\n } else {\n throw err;\n }\n }\n }\n static async generateDPoPJkt(keyPair) {\n try {\n const publicJwk = await crypto.subtle.exportKey(\"jwk\", keyPair.publicKey);\n return await _CryptoUtils.customCalculateJwkThumbprint(publicJwk);\n } catch (err) {\n if (err instanceof TypeError) {\n throw new Error(`Could not retrieve dpop keys from storage: ${err.message}`);\n } else {\n throw err;\n }\n }\n }\n static async generateDPoPKeys() {\n return await window.crypto.subtle.generateKey(\n {\n name: \"ECDSA\",\n namedCurve: \"P-256\"\n },\n false,\n [\"sign\", \"verify\"]\n );\n }\n /**\n * Generates a client assertion JWT for client_secret_jwt authentication\n * @param client_id The client identifier\n * @param client_secret The client secret\n * @param audience The token endpoint URL (audience)\n * @param algorithm The HMAC algorithm to use (HS256, HS384, HS512). Defaults to HS256\n */\n static async generateClientAssertionJwt(client_id, client_secret, audience, algorithm = \"HS256\") {\n const now = Math.floor(Date.now() / 1e3);\n const header = {\n \"alg\": algorithm,\n \"typ\": \"JWT\"\n };\n const payload = {\n \"iss\": client_id,\n \"sub\": client_id,\n \"aud\": audience,\n \"jti\": _CryptoUtils.generateUUIDv4(),\n \"exp\": now + 300,\n // 5 minutes\n \"iat\": now\n };\n const hashMap = {\n \"HS256\": \"SHA-256\",\n \"HS384\": \"SHA-384\",\n \"HS512\": \"SHA-512\"\n };\n const hashFunction = hashMap[algorithm];\n if (!hashFunction) {\n throw new Error(`Unsupported algorithm: ${algorithm}. Supported algorithms are: HS256, HS384, HS512`);\n }\n const encoder = new TextEncoder();\n const secretKey = await crypto.subtle.importKey(\n \"raw\",\n encoder.encode(client_secret),\n { name: \"HMAC\", hash: hashFunction },\n false,\n [\"sign\"]\n );\n return await JwtUtils.generateSignedJwtWithHmac(header, payload, secretKey);\n }\n};\n/**\n * Generates a base64url encoded string\n */\n_CryptoUtils.encodeBase64Url = (input) => {\n return toBase64(input).replace(/=/g, \"\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n};\nvar CryptoUtils = _CryptoUtils;\n\n// src/utils/Event.ts\nvar Event = class {\n constructor(_name) {\n this._name = _name;\n this._callbacks = [];\n this._logger = new Logger(`Event('${this._name}')`);\n }\n addHandler(cb) {\n this._callbacks.push(cb);\n return () => this.removeHandler(cb);\n }\n removeHandler(cb) {\n const idx = this._callbacks.lastIndexOf(cb);\n if (idx >= 0) {\n this._callbacks.splice(idx, 1);\n }\n }\n async raise(...ev) {\n this._logger.debug(\"raise:\", ...ev);\n for (const cb of this._callbacks) {\n await cb(...ev);\n }\n }\n};\n\n// src/utils/PopupUtils.ts\nvar PopupUtils = class {\n /**\n * Populates a map of window features with a placement centered in front of\n * the current window. If no explicit width is given, a default value is\n * binned into [800, 720, 600, 480, 360] based on the current window's width.\n */\n static center({ ...features }) {\n var _a, _b, _c;\n if (features.width == null)\n features.width = (_a = [800, 720, 600, 480].find((width) => width <= window.outerWidth / 1.618)) != null ? _a : 360;\n (_b = features.left) != null ? _b : features.left = Math.max(0, Math.round(window.screenX + (window.outerWidth - features.width) / 2));\n if (features.height != null)\n (_c = features.top) != null ? _c : features.top = Math.max(0, Math.round(window.screenY + (window.outerHeight - features.height) / 2));\n return features;\n }\n static serialize(features) {\n return Object.entries(features).filter(([, value]) => value != null).map(([key, value]) => `${key}=${typeof value !== \"boolean\" ? value : value ? \"yes\" : \"no\"}`).join(\",\");\n }\n};\n\n// src/utils/Timer.ts\nvar Timer = class _Timer extends Event {\n constructor() {\n super(...arguments);\n this._logger = new Logger(`Timer('${this._name}')`);\n this._timerHandle = null;\n this._expiration = 0;\n this._callback = () => {\n const diff = this._expiration - _Timer.getEpochTime();\n this._logger.debug(\"timer completes in\", diff);\n if (this._expiration <= _Timer.getEpochTime()) {\n this.cancel();\n void super.raise();\n }\n };\n }\n // get the time\n static getEpochTime() {\n return Math.floor(Date.now() / 1e3);\n }\n init(durationInSeconds) {\n const logger2 = this._logger.create(\"init\");\n durationInSeconds = Math.max(Math.floor(durationInSeconds), 1);\n const expiration = _Timer.getEpochTime() + durationInSeconds;\n if (this.expiration === expiration && this._timerHandle) {\n logger2.debug(\"skipping since already initialized for expiration at\", this.expiration);\n return;\n }\n this.cancel();\n logger2.debug(\"using duration\", durationInSeconds);\n this._expiration = expiration;\n const timerDurationInSeconds = Math.min(durationInSeconds, 5);\n this._timerHandle = setInterval(this._callback, timerDurationInSeconds * 1e3);\n }\n get expiration() {\n return this._expiration;\n }\n cancel() {\n this._logger.create(\"cancel\");\n if (this._timerHandle) {\n clearInterval(this._timerHandle);\n this._timerHandle = null;\n }\n }\n};\n\n// src/utils/UrlUtils.ts\nvar UrlUtils = class {\n static readParams(url, responseMode = \"query\") {\n if (!url) throw new TypeError(\"Invalid URL\");\n const parsedUrl = new URL(url, \"http://127.0.0.1\");\n const params = parsedUrl[responseMode === \"fragment\" ? \"hash\" : \"search\"];\n return new URLSearchParams(params.slice(1));\n }\n};\nvar URL_STATE_DELIMITER = \";\";\n\n// src/errors/ErrorResponse.ts\nvar ErrorResponse = class extends Error {\n constructor(args, form) {\n var _a, _b, _c;\n super(args.error_description || args.error || \"\");\n this.form = form;\n /** Marker to detect class: \"ErrorResponse\" */\n this.name = \"ErrorResponse\";\n if (!args.error) {\n Logger.error(\"ErrorResponse\", \"No error passed\");\n throw new Error(\"No error passed\");\n }\n this.error = args.error;\n this.error_description = (_a = args.error_description) != null ? _a : null;\n this.error_uri = (_b = args.error_uri) != null ? _b : null;\n this.state = args.userState;\n this.session_state = (_c = args.session_state) != null ? _c : null;\n this.url_state = args.url_state;\n }\n};\n\n// src/errors/ErrorTimeout.ts\nvar ErrorTimeout = class extends Error {\n constructor(message) {\n super(message);\n /** Marker to detect class: \"ErrorTimeout\" */\n this.name = \"ErrorTimeout\";\n }\n};\n\n// src/AccessTokenEvents.ts\nvar AccessTokenEvents = class {\n constructor(args) {\n this._logger = new Logger(\"AccessTokenEvents\");\n this._expiringTimer = new Timer(\"Access token expiring\");\n this._expiredTimer = new Timer(\"Access token expired\");\n this._expiringNotificationTimeInSeconds = args.expiringNotificationTimeInSeconds;\n }\n async load(container) {\n const logger2 = this._logger.create(\"load\");\n if (container.access_token && container.expires_in !== void 0) {\n const duration = container.expires_in;\n logger2.debug(\"access token present, remaining duration:\", duration);\n if (duration > 0) {\n let expiring = duration - this._expiringNotificationTimeInSeconds;\n if (expiring <= 0) {\n expiring = 1;\n }\n logger2.debug(\"registering expiring timer, raising in\", expiring, \"seconds\");\n this._expiringTimer.init(expiring);\n } else {\n logger2.debug(\"canceling existing expiring timer because we're past expiration.\");\n this._expiringTimer.cancel();\n }\n const expired = duration + 1;\n logger2.debug(\"registering expired timer, raising in\", expired, \"seconds\");\n this._expiredTimer.init(expired);\n } else {\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n }\n async unload() {\n this._logger.debug(\"unload: canceling existing access token timers\");\n this._expiringTimer.cancel();\n this._expiredTimer.cancel();\n }\n /**\n * Add callback: Raised prior to the access token expiring.\n */\n addAccessTokenExpiring(cb) {\n return this._expiringTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised prior to the access token expiring.\n */\n removeAccessTokenExpiring(cb) {\n this._expiringTimer.removeHandler(cb);\n }\n /**\n * Add callback: Raised after the access token has expired.\n */\n addAccessTokenExpired(cb) {\n return this._expiredTimer.addHandler(cb);\n }\n /**\n * Remove callback: Raised after the access token has expired.\n */\n removeAccessTokenExpired(cb) {\n this._expiredTimer.removeHandler(cb);\n }\n};\n\n// src/CheckSessionIFrame.ts\nvar CheckSessionIFrame = class {\n constructor(_callback, _client_id, url, _intervalInSeconds, _stopOnError) {\n this._callback = _callback;\n this._client_id = _client_id;\n this._intervalInSeconds = _intervalInSeconds;\n this._stopOnError = _stopOnError;\n this._logger = new Logger(\"CheckSessionIFrame\");\n this._timer = null;\n this._session_state = null;\n this._message = (e) => {\n if (e.origin === this._frame_origin && e.source === this._frame.contentWindow) {\n if (e.data === \"error\") {\n this._logger.error(\"error message from check session op iframe\");\n if (this._stopOnError) {\n this.stop();\n }\n } else if (e.data === \"changed\") {\n this._logger.debug(\"changed message from check session op iframe\");\n this.stop();\n void this._callback();\n } else {\n this._logger.debug(e.data + \" message from check session op iframe\");\n }\n }\n };\n const parsedUrl = new URL(url);\n this._frame_origin = parsedUrl.origin;\n this._frame = window.document.createElement(\"iframe\");\n this._frame.style.visibility = \"hidden\";\n this._frame.style.position = \"fixed\";\n this._frame.style.left = \"-1000px\";\n this._frame.style.top = \"0\";\n this._frame.width = \"0\";\n this._frame.height = \"0\";\n this._frame.src = parsedUrl.href;\n }\n load() {\n return new Promise((resolve) => {\n this._frame.onload = () => {\n resolve();\n };\n window.document.body.appendChild(this._frame);\n window.addEventListener(\"message\", this._message, false);\n });\n }\n start(session_state) {\n if (this._session_state === session_state) {\n return;\n }\n this._logger.create(\"start\");\n this.stop();\n this._session_state = session_state;\n const send = () => {\n if (!this._frame.contentWindow || !this._session_state) {\n return;\n }\n this._frame.contentWindow.postMessage(this._client_id + \" \" + this._session_state, this._frame_origin);\n };\n send();\n this._timer = setInterval(send, this._intervalInSeconds * 1e3);\n }\n stop() {\n this._logger.create(\"stop\");\n this._session_state = null;\n if (this._timer) {\n clearInterval(this._timer);\n this._timer = null;\n }\n }\n};\n\n// src/InMemoryWebStorage.ts\nvar InMemoryWebStorage = class {\n constructor() {\n this._logger = new Logger(\"InMemoryWebStorage\");\n this._data = {};\n }\n clear() {\n this._logger.create(\"clear\");\n this._data = {};\n }\n getItem(key) {\n this._logger.create(`getItem('${key}')`);\n return this._data[key];\n }\n setItem(key, value) {\n this._logger.create(`setItem('${key}')`);\n this._data[key] = value;\n }\n removeItem(key) {\n this._logger.create(`removeItem('${key}')`);\n delete this._data[key];\n }\n get length() {\n return Object.getOwnPropertyNames(this._data).length;\n }\n key(index) {\n return Object.getOwnPropertyNames(this._data)[index];\n }\n};\n\n// src/errors/ErrorDPoPNonce.ts\nvar ErrorDPoPNonce = class extends Error {\n constructor(nonce, message) {\n super(message);\n /** Marker to detect class: \"ErrorDPoPNonce\" */\n this.name = \"ErrorDPoPNonce\";\n this.nonce = nonce;\n }\n};\n\n// src/JsonService.ts\nvar JsonService = class {\n constructor(additionalContentTypes = [], _jwtHandler = null, _extraHeaders = {}) {\n this._jwtHandler = _jwtHandler;\n this._extraHeaders = _extraHeaders;\n this._logger = new Logger(\"JsonService\");\n this._contentTypes = [];\n this._contentTypes.push(...additionalContentTypes, \"application/json\");\n if (_jwtHandler) {\n this._contentTypes.push(\"application/jwt\");\n }\n }\n async fetchWithTimeout(input, init = {}) {\n const { timeoutInSeconds, ...initFetch } = init;\n if (!timeoutInSeconds) {\n return await fetch(input, initFetch);\n }\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutInSeconds * 1e3);\n try {\n const response = await fetch(input, {\n ...init,\n signal: controller.signal\n });\n return response;\n } catch (err) {\n if (err instanceof DOMException && err.name === \"AbortError\") {\n throw new ErrorTimeout(\"Network timed out\");\n }\n throw err;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n async getJson(url, {\n token,\n credentials,\n timeoutInSeconds\n } = {}) {\n const logger2 = this._logger.create(\"getJson\");\n const headers = {\n \"Accept\": this._contentTypes.join(\", \")\n };\n if (token) {\n logger2.debug(\"token passed, setting Authorization header\");\n headers[\"Authorization\"] = \"Bearer \" + token;\n }\n this._appendExtraHeaders(headers);\n let response;\n try {\n logger2.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"GET\", headers, timeoutInSeconds, credentials });\n } catch (err) {\n logger2.error(\"Network Error\");\n throw err;\n }\n logger2.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find((item) => contentType.startsWith(item))) {\n logger2.throw(new Error(`Invalid response Content-Type: ${contentType != null ? contentType : \"undefined\"}, from URL: ${url}`));\n }\n if (response.ok && this._jwtHandler && (contentType == null ? void 0 : contentType.startsWith(\"application/jwt\"))) {\n return await this._jwtHandler(await response.text());\n }\n let json;\n try {\n json = await response.json();\n } catch (err) {\n logger2.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n if (!response.ok) {\n logger2.error(\"Error from server:\", json);\n if (json.error) {\n throw new ErrorResponse(json);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n return json;\n }\n async postForm(url, {\n body,\n basicAuth,\n timeoutInSeconds,\n initCredentials,\n extraHeaders\n }) {\n const logger2 = this._logger.create(\"postForm\");\n const headers = {\n \"Accept\": this._contentTypes.join(\", \"),\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n ...extraHeaders\n };\n if (basicAuth !== void 0) {\n headers[\"Authorization\"] = \"Basic \" + basicAuth;\n }\n this._appendExtraHeaders(headers);\n let response;\n try {\n logger2.debug(\"url:\", url);\n response = await this.fetchWithTimeout(url, { method: \"POST\", headers, body, timeoutInSeconds, credentials: initCredentials });\n } catch (err) {\n logger2.error(\"Network error\");\n throw err;\n }\n logger2.debug(\"HTTP response received, status\", response.status);\n const contentType = response.headers.get(\"Content-Type\");\n if (contentType && !this._contentTypes.find((item) => contentType.startsWith(item))) {\n throw new Error(`Invalid response Content-Type: ${contentType != null ? contentType : \"undefined\"}, from URL: ${url}`);\n }\n const responseText = await response.text();\n let json = {};\n if (responseText) {\n try {\n json = JSON.parse(responseText);\n } catch (err) {\n logger2.error(\"Error parsing JSON response\", err);\n if (response.ok) throw err;\n throw new Error(`${response.statusText} (${response.status})`);\n }\n }\n if (!response.ok) {\n logger2.error(\"Error from server:\", json);\n if (response.headers.has(\"dpop-nonce\")) {\n const nonce = response.headers.get(\"dpop-nonce\");\n throw new ErrorDPoPNonce(nonce, `${JSON.stringify(json)}`);\n }\n if (json.error) {\n throw new ErrorResponse(json, body);\n }\n throw new Error(`${response.statusText} (${response.status}): ${JSON.stringify(json)}`);\n }\n return json;\n }\n _appendExtraHeaders(headers) {\n const logger2 = this._logger.create(\"appendExtraHeaders\");\n const customKeys = Object.keys(this._extraHeaders);\n const protectedHeaders = [\n \"accept\",\n \"content-type\"\n ];\n const preventOverride = [\n \"authorization\"\n ];\n if (customKeys.length === 0) {\n return;\n }\n customKeys.forEach((headerName) => {\n if (protectedHeaders.includes(headerName.toLocaleLowerCase())) {\n logger2.warn(\"Protected header could not be set\", headerName, protectedHeaders);\n return;\n }\n if (preventOverride.includes(headerName.toLocaleLowerCase()) && Object.keys(headers).includes(headerName)) {\n logger2.warn(\"Header could not be overridden\", headerName, preventOverride);\n return;\n }\n const content = typeof this._extraHeaders[headerName] === \"function\" ? this._extraHeaders[headerName]() : this._extraHeaders[headerName];\n if (content && content !== \"\") {\n headers[headerName] = content;\n }\n });\n }\n};\n\n// src/MetadataService.ts\nvar MetadataService = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"MetadataService\");\n this._signingKeys = null;\n this._metadata = null;\n this._metadataUrl = this._settings.metadataUrl;\n this._jsonService = new JsonService(\n [\"application/jwk-set+json\"],\n null,\n this._settings.extraHeaders\n );\n if (this._settings.signingKeys) {\n this._logger.debug(\"using signingKeys from settings\");\n this._signingKeys = this._settings.signingKeys;\n }\n if (this._settings.metadata) {\n this._logger.debug(\"using metadata from settings\");\n this._metadata = this._settings.metadata;\n }\n if (this._settings.fetchRequestCredentials) {\n this._logger.debug(\"using fetchRequestCredentials from settings\");\n this._fetchRequestCredentials = this._settings.fetchRequestCredentials;\n }\n }\n resetSigningKeys() {\n this._signingKeys = null;\n }\n async getMetadata() {\n const logger2 = this._logger.create(\"getMetadata\");\n if (this._metadata) {\n logger2.debug(\"using cached values\");\n return this._metadata;\n }\n if (!this._metadataUrl) {\n logger2.throw(new Error(\"No authority or metadataUrl configured on settings\"));\n throw null;\n }\n logger2.debug(\"getting metadata from\", this._metadataUrl);\n const metadata = await this._jsonService.getJson(this._metadataUrl, { credentials: this._fetchRequestCredentials, timeoutInSeconds: this._settings.requestTimeoutInSeconds });\n logger2.debug(\"merging remote JSON with seed metadata\");\n this._metadata = Object.assign({}, metadata, this._settings.metadataSeed);\n return this._metadata;\n }\n getIssuer() {\n return this._getMetadataProperty(\"issuer\");\n }\n getAuthorizationEndpoint() {\n return this._getMetadataProperty(\"authorization_endpoint\");\n }\n getUserInfoEndpoint() {\n return this._getMetadataProperty(\"userinfo_endpoint\");\n }\n getTokenEndpoint(optional = true) {\n return this._getMetadataProperty(\"token_endpoint\", optional);\n }\n getCheckSessionIframe() {\n return this._getMetadataProperty(\"check_session_iframe\", true);\n }\n getEndSessionEndpoint() {\n return this._getMetadataProperty(\"end_session_endpoint\", true);\n }\n getRevocationEndpoint(optional = true) {\n return this._getMetadataProperty(\"revocation_endpoint\", optional);\n }\n getKeysEndpoint(optional = true) {\n return this._getMetadataProperty(\"jwks_uri\", optional);\n }\n async _getMetadataProperty(name, optional = false) {\n const logger2 = this._logger.create(`_getMetadataProperty('${name}')`);\n const metadata = await this.getMetadata();\n logger2.debug(\"resolved\");\n if (metadata[name] === void 0) {\n if (optional === true) {\n logger2.warn(\"Metadata does not contain optional property\");\n return void 0;\n }\n logger2.throw(new Error(\"Metadata does not contain property \" + name));\n }\n return metadata[name];\n }\n async getSigningKeys() {\n const logger2 = this._logger.create(\"getSigningKeys\");\n if (this._signingKeys) {\n logger2.debug(\"returning signingKeys from cache\");\n return this._signingKeys;\n }\n const jwks_uri = await this.getKeysEndpoint(false);\n logger2.debug(\"got jwks_uri\", jwks_uri);\n const keySet = await this._jsonService.getJson(jwks_uri, { timeoutInSeconds: this._settings.requestTimeoutInSeconds });\n logger2.debug(\"got key set\", keySet);\n if (!Array.isArray(keySet.keys)) {\n logger2.throw(new Error(\"Missing keys on keyset\"));\n throw null;\n }\n this._signingKeys = keySet.keys;\n return this._signingKeys;\n }\n};\n\n// src/WebStorageStateStore.ts\nvar WebStorageStateStore = class {\n constructor({\n prefix = \"oidc.\",\n store = localStorage\n } = {}) {\n this._logger = new Logger(\"WebStorageStateStore\");\n this._store = store;\n this._prefix = prefix;\n }\n async set(key, value) {\n this._logger.create(`set('${key}')`);\n key = this._prefix + key;\n await this._store.setItem(key, value);\n }\n async get(key) {\n this._logger.create(`get('${key}')`);\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n return item;\n }\n async remove(key) {\n this._logger.create(`remove('${key}')`);\n key = this._prefix + key;\n const item = await this._store.getItem(key);\n await this._store.removeItem(key);\n return item;\n }\n async getAllKeys() {\n this._logger.create(\"getAllKeys\");\n const len = await this._store.length;\n const keys = [];\n for (let index = 0; index < len; index++) {\n const key = await this._store.key(index);\n if (key && key.indexOf(this._prefix) === 0) {\n keys.push(key.substr(this._prefix.length));\n }\n }\n return keys;\n }\n};\n\n// src/OidcClientSettings.ts\nvar DefaultResponseType = \"code\";\nvar DefaultScope = \"openid\";\nvar DefaultClientAuthentication = \"client_secret_post\";\nvar DefaultStaleStateAgeInSeconds = 60 * 15;\nvar OidcClientSettingsStore = class {\n constructor({\n // metadata related\n authority,\n metadataUrl,\n metadata,\n signingKeys,\n metadataSeed,\n // client related\n client_id,\n client_secret,\n response_type = DefaultResponseType,\n scope = DefaultScope,\n redirect_uri,\n post_logout_redirect_uri,\n client_authentication = DefaultClientAuthentication,\n token_endpoint_auth_signing_alg = \"HS256\",\n // optional protocol\n prompt,\n display,\n max_age,\n ui_locales,\n acr_values,\n resource,\n response_mode,\n // behavior flags\n filterProtocolClaims = true,\n loadUserInfo = false,\n requestTimeoutInSeconds,\n staleStateAgeInSeconds = DefaultStaleStateAgeInSeconds,\n mergeClaimsStrategy = { array: \"replace\" },\n disablePKCE = false,\n // other behavior\n stateStore,\n revokeTokenAdditionalContentTypes,\n fetchRequestCredentials,\n refreshTokenAllowedScope,\n // extra\n extraQueryParams = {},\n extraTokenParams = {},\n extraHeaders = {},\n dpop,\n omitScopeWhenRequesting = false\n }) {\n var _a;\n this.authority = authority;\n if (metadataUrl) {\n this.metadataUrl = metadataUrl;\n } else {\n this.metadataUrl = authority;\n if (authority) {\n if (!this.metadataUrl.endsWith(\"/\")) {\n this.metadataUrl += \"/\";\n }\n this.metadataUrl += \".well-known/openid-configuration\";\n }\n }\n this.metadata = metadata;\n this.metadataSeed = metadataSeed;\n this.signingKeys = signingKeys;\n this.client_id = client_id;\n this.client_secret = client_secret;\n this.response_type = response_type;\n this.scope = scope;\n this.redirect_uri = redirect_uri;\n this.post_logout_redirect_uri = post_logout_redirect_uri;\n this.client_authentication = client_authentication;\n this.token_endpoint_auth_signing_alg = token_endpoint_auth_signing_alg;\n this.prompt = prompt;\n this.display = display;\n this.max_age = max_age;\n this.ui_locales = ui_locales;\n this.acr_values = acr_values;\n this.resource = resource;\n this.response_mode = response_mode;\n this.filterProtocolClaims = filterProtocolClaims != null ? filterProtocolClaims : true;\n this.loadUserInfo = !!loadUserInfo;\n this.staleStateAgeInSeconds = staleStateAgeInSeconds;\n this.mergeClaimsStrategy = mergeClaimsStrategy;\n this.omitScopeWhenRequesting = omitScopeWhenRequesting;\n this.disablePKCE = !!disablePKCE;\n this.revokeTokenAdditionalContentTypes = revokeTokenAdditionalContentTypes;\n this.fetchRequestCredentials = fetchRequestCredentials ? fetchRequestCredentials : \"same-origin\";\n this.requestTimeoutInSeconds = requestTimeoutInSeconds;\n if (stateStore) {\n this.stateStore = stateStore;\n } else {\n const store = typeof window !== \"undefined\" ? window.localStorage : new InMemoryWebStorage();\n this.stateStore = new WebStorageStateStore({ store });\n }\n this.refreshTokenAllowedScope = refreshTokenAllowedScope;\n this.extraQueryParams = extraQueryParams;\n this.extraTokenParams = extraTokenParams;\n this.extraHeaders = extraHeaders;\n this.dpop = dpop;\n if (this.dpop && !((_a = this.dpop) == null ? void 0 : _a.store)) {\n throw new Error(\"A DPoPStore is required when dpop is enabled\");\n }\n }\n};\n\n// src/UserInfoService.ts\nvar UserInfoService = class {\n constructor(_settings, _metadataService) {\n this._settings = _settings;\n this._metadataService = _metadataService;\n this._logger = new Logger(\"UserInfoService\");\n this._getClaimsFromJwt = async (responseText) => {\n const logger2 = this._logger.create(\"_getClaimsFromJwt\");\n try {\n const payload = JwtUtils.decode(responseText);\n logger2.debug(\"JWT decoding successful\");\n return payload;\n } catch (err) {\n logger2.error(\"Error parsing JWT response\");\n throw err;\n }\n };\n this._jsonService = new JsonService(\n void 0,\n this._getClaimsFromJwt,\n this._settings.extraHeaders\n );\n }\n async getClaims(token) {\n const logger2 = this._logger.create(\"getClaims\");\n if (!token) {\n this._logger.throw(new Error(\"No token passed\"));\n }\n const url = await this._metadataService.getUserInfoEndpoint();\n logger2.debug(\"got userinfo url\", url);\n const claims = await this._jsonService.getJson(url, {\n token,\n credentials: this._settings.fetchRequestCredentials,\n timeoutInSeconds: this._settings.requestTimeoutInSeconds\n });\n logger2.debug(\"got claims\", claims);\n return claims;\n }\n};\n\n// src/TokenClient.ts\nvar TokenClient = class {\n constructor(_settings, _metadataService) {\n this._settings = _settings;\n this._metadataService = _metadataService;\n this._logger = new Logger(\"TokenClient\");\n this._jsonService = new JsonService(\n this._settings.revokeTokenAdditionalContentTypes,\n null,\n this._settings.extraHeaders\n );\n }\n /**\n * Exchange code.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3\n */\n async exchangeCode({\n grant_type = \"authorization_code\",\n redirect_uri = this._settings.redirect_uri,\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n extraHeaders,\n ...args\n }) {\n const logger2 = this._logger.create(\"exchangeCode\");\n if (!client_id) {\n logger2.throw(new Error(\"A client_id is required\"));\n }\n if (!redirect_uri) {\n logger2.throw(new Error(\"A redirect_uri is required\"));\n }\n if (!args.code) {\n logger2.throw(new Error(\"A code is required\"));\n }\n const params = new URLSearchParams({ grant_type, redirect_uri });\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n if ((this._settings.client_authentication === \"client_secret_basic\" || this._settings.client_authentication === \"client_secret_jwt\") && (client_secret === void 0 || client_secret === null)) {\n logger2.throw(new Error(\"A client_secret is required\"));\n throw null;\n }\n let basicAuth;\n const url = await this._metadataService.getTokenEndpoint(false);\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n case \"client_secret_jwt\": {\n const clientAssertion = await CryptoUtils.generateClientAssertionJwt(client_id, client_secret, url, this._settings.token_endpoint_auth_signing_alg);\n params.append(\"client_id\", client_id);\n params.append(\"client_assertion_type\", \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\n params.append(\"client_assertion\", clientAssertion);\n break;\n }\n }\n logger2.debug(\"got token endpoint\");\n const response = await this._jsonService.postForm(url, {\n body: params,\n basicAuth,\n timeoutInSeconds: this._settings.requestTimeoutInSeconds,\n initCredentials: this._settings.fetchRequestCredentials,\n extraHeaders\n });\n logger2.debug(\"got response\");\n return response;\n }\n /**\n * Exchange credentials.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-4.3.2\n */\n async exchangeCredentials({\n grant_type = \"password\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n scope = this._settings.scope,\n ...args\n }) {\n const logger2 = this._logger.create(\"exchangeCredentials\");\n if (!client_id) {\n logger2.throw(new Error(\"A client_id is required\"));\n }\n const params = new URLSearchParams({ grant_type });\n if (!this._settings.omitScopeWhenRequesting) {\n params.set(\"scope\", scope);\n }\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n if ((this._settings.client_authentication === \"client_secret_basic\" || this._settings.client_authentication === \"client_secret_jwt\") && (client_secret === void 0 || client_secret === null)) {\n logger2.throw(new Error(\"A client_secret is required\"));\n throw null;\n }\n let basicAuth;\n const url = await this._metadataService.getTokenEndpoint(false);\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n case \"client_secret_jwt\": {\n const clientAssertion = await CryptoUtils.generateClientAssertionJwt(client_id, client_secret, url, this._settings.token_endpoint_auth_signing_alg);\n params.append(\"client_id\", client_id);\n params.append(\"client_assertion_type\", \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\n params.append(\"client_assertion\", clientAssertion);\n break;\n }\n }\n logger2.debug(\"got token endpoint\");\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, timeoutInSeconds: this._settings.requestTimeoutInSeconds, initCredentials: this._settings.fetchRequestCredentials });\n logger2.debug(\"got response\");\n return response;\n }\n /**\n * Exchange a refresh token.\n *\n * @see https://www.rfc-editor.org/rfc/rfc6749#section-6\n */\n async exchangeRefreshToken({\n grant_type = \"refresh_token\",\n client_id = this._settings.client_id,\n client_secret = this._settings.client_secret,\n timeoutInSeconds,\n extraHeaders,\n ...args\n }) {\n const logger2 = this._logger.create(\"exchangeRefreshToken\");\n if (!client_id) {\n logger2.throw(new Error(\"A client_id is required\"));\n }\n if (!args.refresh_token) {\n logger2.throw(new Error(\"A refresh_token is required\"));\n }\n const params = new URLSearchParams({ grant_type });\n for (const [key, value] of Object.entries(args)) {\n if (Array.isArray(value)) {\n value.forEach((param) => params.append(key, param));\n } else if (value != null) {\n params.set(key, value);\n }\n }\n if ((this._settings.client_authentication === \"client_secret_basic\" || this._settings.client_authentication === \"client_secret_jwt\") && (client_secret === void 0 || client_secret === null)) {\n logger2.throw(new Error(\"A client_secret is required\"));\n throw null;\n }\n let basicAuth;\n const url = await this._metadataService.getTokenEndpoint(false);\n switch (this._settings.client_authentication) {\n case \"client_secret_basic\":\n basicAuth = CryptoUtils.generateBasicAuth(client_id, client_secret);\n break;\n case \"client_secret_post\":\n params.append(\"client_id\", client_id);\n if (client_secret) {\n params.append(\"client_secret\", client_secret);\n }\n break;\n case \"client_secret_jwt\": {\n const clientAssertion = await CryptoUtils.generateClientAssertionJwt(client_id, client_secret, url, this._settings.token_endpoint_auth_signing_alg);\n params.append(\"client_id\", client_id);\n params.append(\"client_assertion_type\", \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\");\n params.append(\"client_assertion\", clientAssertion);\n break;\n }\n }\n logger2.debug(\"got token endpoint\");\n const response = await this._jsonService.postForm(url, { body: params, basicAuth, timeoutInSeconds, initCredentials: this._settings.fetchRequestCredentials, extraHeaders });\n logger2.debug(\"got response\");\n return response;\n }\n /**\n * Revoke an access or refresh token.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc7009#section-2.1\n */\n async revoke(args) {\n var _a;\n const logger2 = this._logger.create(\"revoke\");\n if (!args.token) {\n logger2.throw(new Error(\"A token is required\"));\n }\n const url = await this._metadataService.getRevocationEndpoint(false);\n logger2.debug(`got revocation endpoint, revoking ${(_a = args.token_type_hint) != null ? _a : \"default token type\"}`);\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(args)) {\n if (value != null) {\n params.set(key, value);\n }\n }\n params.set(\"client_id\", this._settings.client_id);\n if (this._settings.client_secret) {\n params.set(\"client_secret\", this._settings.client_secret);\n }\n await this._jsonService.postForm(url, { body: params, timeoutInSeconds: this._settings.requestTimeoutInSeconds });\n logger2.debug(\"got response\");\n }\n};\n\n// src/ResponseValidator.ts\nvar ResponseValidator = class {\n constructor(_settings, _metadataService, _claimsService) {\n this._settings = _settings;\n this._metadataService = _metadataService;\n this._claimsService = _claimsService;\n this._logger = new Logger(\"ResponseValidator\");\n this._userInfoService = new UserInfoService(this._settings, this._metadataService);\n this._tokenClient = new TokenClient(this._settings, this._metadataService);\n }\n async validateSigninResponse(response, state, extraHeaders) {\n const logger2 = this._logger.create(\"validateSigninResponse\");\n this._processSigninState(response, state);\n logger2.debug(\"state processed\");\n await this._processCode(response, state, extraHeaders);\n logger2.debug(\"code processed\");\n if (response.isOpenId) {\n this._validateIdTokenAttributes(response);\n }\n logger2.debug(\"tokens validated\");\n await this._processClaims(response, state == null ? void 0 : state.skipUserInfo, response.isOpenId);\n logger2.debug(\"claims processed\");\n }\n async validateCredentialsResponse(response, skipUserInfo) {\n const logger2 = this._logger.create(\"validateCredentialsResponse\");\n const shouldValidateSubClaim = response.isOpenId && !!response.id_token;\n if (shouldValidateSubClaim) {\n this._validateIdTokenAttributes(response);\n }\n logger2.debug(\"tokens validated\");\n await this._processClaims(response, skipUserInfo, shouldValidateSubClaim);\n logger2.debug(\"claims processed\");\n }\n async validateRefreshResponse(response, state) {\n var _a, _b;\n const logger2 = this._logger.create(\"validateRefreshResponse\");\n response.userState = state.data;\n (_a = response.session_state) != null ? _a : response.session_state = state.session_state;\n (_b = response.scope) != null ? _b : response.scope = state.scope;\n if (response.isOpenId && !!response.id_token) {\n this._validateIdTokenAttributes(response, state.id_token);\n logger2.debug(\"ID Token validated\");\n }\n if (!response.id_token) {\n response.id_token = state.id_token;\n response.profile = state.profile;\n }\n const hasIdToken = response.isOpenId && !!response.id_token;\n await this._processClaims(response, false, hasIdToken);\n logger2.debug(\"claims processed\");\n }\n validateSignoutResponse(response, state) {\n const logger2 = this._logger.create(\"validateSignoutResponse\");\n if (state.id !== response.state) {\n logger2.throw(new Error(\"State does not match\"));\n }\n logger2.debug(\"state validated\");\n response.userState = state.data;\n if (response.error) {\n logger2.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n }\n _processSigninState(response, state) {\n var _a;\n const logger2 = this._logger.create(\"_processSigninState\");\n if (state.id !== response.state) {\n logger2.throw(new Error(\"State does not match\"));\n }\n if (!state.client_id) {\n logger2.throw(new Error(\"No client_id on state\"));\n }\n if (!state.authority) {\n logger2.throw(new Error(\"No authority on state\"));\n }\n if (this._settings.authority !== state.authority) {\n logger2.throw(new Error(\"authority mismatch on settings vs. signin state\"));\n }\n if (this._settings.client_id && this._settings.client_id !== state.client_id) {\n logger2.throw(new Error(\"client_id mismatch on settings vs. signin state\"));\n }\n logger2.debug(\"state validated\");\n response.userState = state.data;\n response.url_state = state.url_state;\n (_a = response.scope) != null ? _a : response.scope = state.scope;\n if (response.error) {\n logger2.warn(\"Response was error\", response.error);\n throw new ErrorResponse(response);\n }\n if (state.code_verifier && !response.code) {\n logger2.throw(new Error(\"Expected code in response\"));\n }\n }\n async _processClaims(response, skipUserInfo = false, validateSub = true) {\n const logger2 = this._logger.create(\"_processClaims\");\n response.profile = this._claimsService.filterProtocolClaims(response.profile);\n if (skipUserInfo || !this._settings.loadUserInfo || !response.access_token) {\n logger2.debug(\"not loading user info\");\n return;\n }\n logger2.debug(\"loading user info\");\n const claims = await this._userInfoService.getClaims(response.access_token);\n logger2.debug(\"user info claims received from user info endpoint\");\n if (validateSub && claims.sub !== response.profile.sub) {\n logger2.throw(new Error(\"subject from UserInfo response does not match subject in ID Token\"));\n }\n response.profile = this._claimsService.mergeClaims(response.profile, this._claimsService.filterProtocolClaims(claims));\n logger2.debug(\"user info claims received, updated profile:\", response.profile);\n }\n async _processCode(response, state, extraHeaders) {\n const logger2 = this._logger.create(\"_processCode\");\n if (response.code) {\n logger2.debug(\"Validating code\");\n const tokenResponse = await this._tokenClient.exchangeCode({\n client_id: state.client_id,\n client_secret: state.client_secret,\n code: response.code,\n redirect_uri: state.redirect_uri,\n code_verifier: state.code_verifier,\n extraHeaders,\n ...state.extraTokenParams\n });\n Object.assign(response, tokenResponse);\n } else {\n logger2.debug(\"No code to process\");\n }\n }\n _validateIdTokenAttributes(response, existingToken) {\n var _a;\n const logger2 = this._logger.create(\"_validateIdTokenAttributes\");\n logger2.debug(\"decoding ID Token JWT\");\n const incoming = JwtUtils.decode((_a = response.id_token) != null ? _a : \"\");\n if (!incoming.sub) {\n logger2.throw(new Error(\"ID Token is missing a subject claim\"));\n }\n if (existingToken) {\n const existing = JwtUtils.decode(existingToken);\n if (incoming.sub !== existing.sub) {\n logger2.throw(new Error(\"sub in id_token does not match current sub\"));\n }\n if (incoming.auth_time && incoming.auth_time !== existing.auth_time) {\n logger2.throw(new Error(\"auth_time in id_token does not match original auth_time\"));\n }\n if (incoming.azp && incoming.azp !== existing.azp) {\n logger2.throw(new Error(\"azp in id_token does not match original azp\"));\n }\n if (!incoming.azp && existing.azp) {\n logger2.throw(new Error(\"azp not in id_token, but present in original id_token\"));\n }\n }\n response.profile = incoming;\n }\n};\n\n// src/State.ts\nvar State = class _State {\n constructor(args) {\n this.id = args.id || CryptoUtils.generateUUIDv4();\n this.data = args.data;\n if (args.created && args.created > 0) {\n this.created = args.created;\n } else {\n this.created = Timer.getEpochTime();\n }\n this.request_type = args.request_type;\n this.url_state = args.url_state;\n }\n toStorageString() {\n new Logger(\"State\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state\n });\n }\n static fromStorageString(storageString) {\n Logger.createStatic(\"State\", \"fromStorageString\");\n return Promise.resolve(new _State(JSON.parse(storageString)));\n }\n static async clearStaleState(storage, age) {\n const logger2 = Logger.createStatic(\"State\", \"clearStaleState\");\n const cutoff = Timer.getEpochTime() - age;\n const keys = await storage.getAllKeys();\n logger2.debug(\"got keys\", keys);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const item = await storage.get(key);\n let remove = false;\n if (item) {\n try {\n const state = await _State.fromStorageString(item);\n logger2.debug(\"got item from key:\", key, state.created);\n if (state.created <= cutoff) {\n remove = true;\n }\n } catch (err) {\n logger2.error(\"Error parsing state for key:\", key, err);\n remove = true;\n }\n } else {\n logger2.debug(\"no item in storage for key:\", key);\n remove = true;\n }\n if (remove) {\n logger2.debug(\"removed item for key:\", key);\n void storage.remove(key);\n }\n }\n }\n};\n\n// src/SigninState.ts\nvar SigninState = class _SigninState extends State {\n constructor(args) {\n super(args);\n this.code_verifier = args.code_verifier;\n this.code_challenge = args.code_challenge;\n this.authority = args.authority;\n this.client_id = args.client_id;\n this.redirect_uri = args.redirect_uri;\n this.scope = args.scope;\n this.client_secret = args.client_secret;\n this.extraTokenParams = args.extraTokenParams;\n this.response_mode = args.response_mode;\n this.skipUserInfo = args.skipUserInfo;\n }\n static async create(args) {\n const code_verifier = args.code_verifier === true ? CryptoUtils.generateCodeVerifier() : args.code_verifier || void 0;\n const code_challenge = code_verifier ? await CryptoUtils.generateCodeChallenge(code_verifier) : void 0;\n return new _SigninState({\n ...args,\n code_verifier,\n code_challenge\n });\n }\n toStorageString() {\n new Logger(\"SigninState\").create(\"toStorageString\");\n return JSON.stringify({\n id: this.id,\n data: this.data,\n created: this.created,\n request_type: this.request_type,\n url_state: this.url_state,\n code_verifier: this.code_verifier,\n authority: this.authority,\n client_id: this.client_id,\n redirect_uri: this.redirect_uri,\n scope: this.scope,\n client_secret: this.client_secret,\n extraTokenParams: this.extraTokenParams,\n response_mode: this.response_mode,\n skipUserInfo: this.skipUserInfo\n });\n }\n static fromStorageString(storageString) {\n Logger.createStatic(\"SigninState\", \"fromStorageString\");\n const data = JSON.parse(storageString);\n return _SigninState.create(data);\n }\n};\n\n// src/SigninRequest.ts\nvar _SigninRequest = class _SigninRequest {\n constructor(args) {\n this.url = args.url;\n this.state = args.state;\n }\n static async create({\n // mandatory\n url,\n authority,\n client_id,\n redirect_uri,\n response_type,\n scope,\n // optional\n state_data,\n response_mode,\n request_type,\n client_secret,\n nonce,\n url_state,\n resource,\n skipUserInfo,\n extraQueryParams,\n extraTokenParams,\n disablePKCE,\n dpopJkt,\n omitScopeWhenRequesting,\n ...optionalParams\n }) {\n if (!url) {\n this._logger.error(\"create: No url passed\");\n throw new Error(\"url\");\n }\n if (!client_id) {\n this._logger.error(\"create: No client_id passed\");\n throw new Error(\"client_id\");\n }\n if (!redirect_uri) {\n this._logger.error(\"create: No redirect_uri passed\");\n throw new Error(\"redirect_uri\");\n }\n if (!response_type) {\n this._logger.error(\"create: No response_type passed\");\n throw new Error(\"response_type\");\n }\n if (!scope) {\n this._logger.error(\"create: No scope passed\");\n throw new Error(\"scope\");\n }\n if (!authority) {\n this._logger.error(\"create: No authority passed\");\n throw new Error(\"authority\");\n }\n const state = await SigninState.create({\n data: state_data,\n request_type,\n url_state,\n code_verifier: !disablePKCE,\n client_id,\n authority,\n redirect_uri,\n response_mode,\n client_secret,\n scope,\n extraTokenParams,\n skipUserInfo\n });\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.append(\"client_id\", client_id);\n parsedUrl.searchParams.append(\"redirect_uri\", redirect_uri);\n parsedUrl.searchParams.append(\"response_type\", response_type);\n if (!omitScopeWhenRequesting) {\n parsedUrl.searchParams.append(\"scope\", scope);\n }\n if (nonce) {\n parsedUrl.searchParams.append(\"nonce\", nonce);\n }\n if (dpopJkt) {\n parsedUrl.searchParams.append(\"dpop_jkt\", dpopJkt);\n }\n let stateParam = state.id;\n if (url_state) {\n stateParam = `${stateParam}${URL_STATE_DELIMITER}${url_state}`;\n }\n parsedUrl.searchParams.append(\"state\", stateParam);\n if (state.code_challenge) {\n parsedUrl.searchParams.append(\"code_challenge\", state.code_challenge);\n parsedUrl.searchParams.append(\"code_challenge_method\", \"S256\");\n }\n if (resource) {\n const resources = Array.isArray(resource) ? resource : [resource];\n resources.forEach((r) => parsedUrl.searchParams.append(\"resource\", r));\n }\n for (const [key, value] of Object.entries({ response_mode, ...optionalParams, ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n return new _SigninRequest({\n url: parsedUrl.href,\n state\n });\n }\n};\n_SigninRequest._logger = new Logger(\"SigninRequest\");\nvar SigninRequest = _SigninRequest;\n\n// src/SigninResponse.ts\nvar OidcScope = \"openid\";\nvar SigninResponse = class {\n constructor(params) {\n /** @see {@link User.access_token} */\n this.access_token = \"\";\n /** @see {@link User.token_type} */\n this.token_type = \"\";\n /** @see {@link User.profile} */\n this.profile = {};\n this.state = params.get(\"state\");\n this.session_state = params.get(\"session_state\");\n if (this.state) {\n const splitState = decodeURIComponent(this.state).split(URL_STATE_DELIMITER);\n this.state = splitState[0];\n if (splitState.length > 1) {\n this.url_state = splitState.slice(1).join(URL_STATE_DELIMITER);\n }\n }\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n this.code = params.get(\"code\");\n }\n get expires_in() {\n if (this.expires_at === void 0) {\n return void 0;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n set expires_in(value) {\n if (typeof value === \"string\") value = Number(value);\n if (value !== void 0 && value >= 0) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n get isOpenId() {\n var _a;\n return ((_a = this.scope) == null ? void 0 : _a.split(\" \").includes(OidcScope)) || !!this.id_token;\n }\n};\n\n// src/SignoutRequest.ts\nvar SignoutRequest = class {\n constructor({\n url,\n state_data,\n id_token_hint,\n post_logout_redirect_uri,\n extraQueryParams,\n request_type,\n client_id,\n url_state\n }) {\n this._logger = new Logger(\"SignoutRequest\");\n if (!url) {\n this._logger.error(\"ctor: No url passed\");\n throw new Error(\"url\");\n }\n const parsedUrl = new URL(url);\n if (id_token_hint) {\n parsedUrl.searchParams.append(\"id_token_hint\", id_token_hint);\n }\n if (client_id) {\n parsedUrl.searchParams.append(\"client_id\", client_id);\n }\n if (post_logout_redirect_uri) {\n parsedUrl.searchParams.append(\"post_logout_redirect_uri\", post_logout_redirect_uri);\n if (state_data || url_state) {\n this.state = new State({ data: state_data, request_type, url_state });\n let stateParam = this.state.id;\n if (url_state) {\n stateParam = `${stateParam}${URL_STATE_DELIMITER}${url_state}`;\n }\n parsedUrl.searchParams.append(\"state\", stateParam);\n }\n }\n for (const [key, value] of Object.entries({ ...extraQueryParams })) {\n if (value != null) {\n parsedUrl.searchParams.append(key, value.toString());\n }\n }\n this.url = parsedUrl.href;\n }\n};\n\n// src/SignoutResponse.ts\nvar SignoutResponse = class {\n constructor(params) {\n this.state = params.get(\"state\");\n if (this.state) {\n const splitState = decodeURIComponent(this.state).split(URL_STATE_DELIMITER);\n this.state = splitState[0];\n if (splitState.length > 1) {\n this.url_state = splitState.slice(1).join(URL_STATE_DELIMITER);\n }\n }\n this.error = params.get(\"error\");\n this.error_description = params.get(\"error_description\");\n this.error_uri = params.get(\"error_uri\");\n }\n};\n\n// src/ClaimsService.ts\nvar DefaultProtocolClaims = [\n \"nbf\",\n \"jti\",\n \"auth_time\",\n \"nonce\",\n \"acr\",\n \"amr\",\n \"azp\",\n \"at_hash\"\n // https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken\n];\nvar InternalRequiredProtocolClaims = [\"sub\", \"iss\", \"aud\", \"exp\", \"iat\"];\nvar ClaimsService = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"ClaimsService\");\n }\n filterProtocolClaims(claims) {\n const result = { ...claims };\n if (this._settings.filterProtocolClaims) {\n let protocolClaims;\n if (Array.isArray(this._settings.filterProtocolClaims)) {\n protocolClaims = this._settings.filterProtocolClaims;\n } else {\n protocolClaims = DefaultProtocolClaims;\n }\n for (const claim of protocolClaims) {\n if (!InternalRequiredProtocolClaims.includes(claim)) {\n delete result[claim];\n }\n }\n }\n return result;\n }\n mergeClaims(claims1, claims2) {\n const result = { ...claims1 };\n for (const [claim, values] of Object.entries(claims2)) {\n if (result[claim] !== values) {\n if (Array.isArray(result[claim]) || Array.isArray(values)) {\n if (this._settings.mergeClaimsStrategy.array == \"replace\") {\n result[claim] = values;\n } else {\n const mergedValues = Array.isArray(result[claim]) ? result[claim] : [result[claim]];\n for (const value of Array.isArray(values) ? values : [values]) {\n if (!mergedValues.includes(value)) {\n mergedValues.push(value);\n }\n }\n result[claim] = mergedValues;\n }\n } else if (typeof result[claim] === \"object\" && typeof values === \"object\") {\n result[claim] = this.mergeClaims(result[claim], values);\n } else {\n result[claim] = values;\n }\n }\n }\n return result;\n }\n};\n\n// src/DPoPStore.ts\nvar DPoPState = class {\n constructor(keys, nonce) {\n this.keys = keys;\n this.nonce = nonce;\n }\n};\n\n// src/OidcClient.ts\nvar OidcClient = class {\n constructor(settings, metadataService) {\n this._logger = new Logger(\"OidcClient\");\n this.settings = settings instanceof OidcClientSettingsStore ? settings : new OidcClientSettingsStore(settings);\n this.metadataService = metadataService != null ? metadataService : new MetadataService(this.settings);\n this._claimsService = new ClaimsService(this.settings);\n this._validator = new ResponseValidator(this.settings, this.metadataService, this._claimsService);\n this._tokenClient = new TokenClient(this.settings, this.metadataService);\n }\n async createSigninRequest({\n state,\n request,\n request_uri,\n request_type,\n id_token_hint,\n login_hint,\n skipUserInfo,\n nonce,\n url_state,\n response_type = this.settings.response_type,\n scope = this.settings.scope,\n redirect_uri = this.settings.redirect_uri,\n prompt = this.settings.prompt,\n display = this.settings.display,\n max_age = this.settings.max_age,\n ui_locales = this.settings.ui_locales,\n acr_values = this.settings.acr_values,\n resource = this.settings.resource,\n response_mode = this.settings.response_mode,\n extraQueryParams = this.settings.extraQueryParams,\n extraTokenParams = this.settings.extraTokenParams,\n dpopJkt,\n omitScopeWhenRequesting = this.settings.omitScopeWhenRequesting\n }) {\n const logger2 = this._logger.create(\"createSigninRequest\");\n if (response_type !== \"code\") {\n throw new Error(\"Only the Authorization Code flow (with PKCE) is supported\");\n }\n const url = await this.metadataService.getAuthorizationEndpoint();\n logger2.debug(\"Received authorization endpoint\", url);\n const signinRequest = await SigninRequest.create({\n url,\n authority: this.settings.authority,\n client_id: this.settings.client_id,\n redirect_uri,\n response_type,\n scope,\n state_data: state,\n url_state,\n prompt,\n display,\n max_age,\n ui_locales,\n id_token_hint,\n login_hint,\n acr_values,\n dpopJkt,\n resource,\n request,\n request_uri,\n extraQueryParams,\n extraTokenParams,\n request_type,\n response_mode,\n client_secret: this.settings.client_secret,\n skipUserInfo,\n nonce,\n disablePKCE: this.settings.disablePKCE,\n omitScopeWhenRequesting\n });\n await this.clearStaleState();\n const signinState = signinRequest.state;\n await this.settings.stateStore.set(signinState.id, signinState.toStorageString());\n return signinRequest;\n }\n async readSigninResponseState(url, removeState = false) {\n const logger2 = this._logger.create(\"readSigninResponseState\");\n const response = new SigninResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger2.throw(new Error(\"No state in response\"));\n throw null;\n }\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger2.throw(new Error(\"No matching state found in storage\"));\n throw null;\n }\n const state = await SigninState.fromStorageString(storedStateString);\n return { state, response };\n }\n async processSigninResponse(url, extraHeaders, removeState = true) {\n const logger2 = this._logger.create(\"processSigninResponse\");\n const { state, response } = await this.readSigninResponseState(url, removeState);\n logger2.debug(\"received state from storage; validating response\");\n if (this.settings.dpop && this.settings.dpop.store) {\n const dpopProof = await this.getDpopProof(this.settings.dpop.store);\n extraHeaders = { ...extraHeaders, \"DPoP\": dpopProof };\n }\n try {\n await this._validator.validateSigninResponse(response, state, extraHeaders);\n } catch (err) {\n if (err instanceof ErrorDPoPNonce && this.settings.dpop) {\n const dpopProof = await this.getDpopProof(this.settings.dpop.store, err.nonce);\n extraHeaders[\"DPoP\"] = dpopProof;\n await this._validator.validateSigninResponse(response, state, extraHeaders);\n } else {\n throw err;\n }\n }\n return response;\n }\n async getDpopProof(dpopStore, nonce) {\n let keyPair;\n let dpopState;\n if (!(await dpopStore.getAllKeys()).includes(this.settings.client_id)) {\n keyPair = await CryptoUtils.generateDPoPKeys();\n dpopState = new DPoPState(keyPair, nonce);\n await dpopStore.set(this.settings.client_id, dpopState);\n } else {\n dpopState = await dpopStore.get(this.settings.client_id);\n if (dpopState.nonce !== nonce && nonce) {\n dpopState.nonce = nonce;\n await dpopStore.set(this.settings.client_id, dpopState);\n }\n }\n return await CryptoUtils.generateDPoPProof({\n url: await this.metadataService.getTokenEndpoint(false),\n httpMethod: \"POST\",\n keyPair: dpopState.keys,\n nonce: dpopState.nonce\n });\n }\n async processResourceOwnerPasswordCredentials({\n username,\n password,\n skipUserInfo = false,\n extraTokenParams = {}\n }) {\n const tokenResponse = await this._tokenClient.exchangeCredentials({ username, password, ...extraTokenParams });\n const signinResponse = new SigninResponse(new URLSearchParams());\n Object.assign(signinResponse, tokenResponse);\n await this._validator.validateCredentialsResponse(signinResponse, skipUserInfo);\n return signinResponse;\n }\n async useRefreshToken({\n state,\n redirect_uri,\n resource,\n timeoutInSeconds,\n extraHeaders,\n extraTokenParams\n }) {\n var _a;\n const logger2 = this._logger.create(\"useRefreshToken\");\n let scope;\n if (this.settings.refreshTokenAllowedScope === void 0) {\n scope = state.scope;\n } else {\n const allowableScopes = this.settings.refreshTokenAllowedScope.split(\" \");\n const providedScopes = ((_a = state.scope) == null ? void 0 : _a.split(\" \")) || [];\n scope = providedScopes.filter((s) => allowableScopes.includes(s)).join(\" \");\n }\n if (this.settings.dpop && this.settings.dpop.store) {\n const dpopProof = await this.getDpopProof(this.settings.dpop.store);\n extraHeaders = { ...extraHeaders, \"DPoP\": dpopProof };\n }\n let result;\n try {\n result = await this._tokenClient.exchangeRefreshToken({\n refresh_token: state.refresh_token,\n // provide the (possible filtered) scope list\n scope,\n redirect_uri,\n resource,\n timeoutInSeconds,\n extraHeaders,\n ...extraTokenParams\n });\n } catch (err) {\n if (err instanceof ErrorDPoPNonce && this.settings.dpop) {\n extraHeaders[\"DPoP\"] = await this.getDpopProof(this.settings.dpop.store, err.nonce);\n result = await this._tokenClient.exchangeRefreshToken({\n refresh_token: state.refresh_token,\n // provide the (possible filtered) scope list\n scope,\n redirect_uri,\n resource,\n timeoutInSeconds,\n extraHeaders,\n ...extraTokenParams\n });\n } else {\n throw err;\n }\n }\n const response = new SigninResponse(new URLSearchParams());\n Object.assign(response, result);\n logger2.debug(\"validating response\", response);\n await this._validator.validateRefreshResponse(response, {\n ...state,\n // override the scope in the state handed over to the validator\n // so it can set the granted scope to the requested scope in case none is included in the response\n scope\n });\n return response;\n }\n async createSignoutRequest({\n state,\n id_token_hint,\n client_id,\n request_type,\n url_state,\n post_logout_redirect_uri = this.settings.post_logout_redirect_uri,\n extraQueryParams = this.settings.extraQueryParams\n } = {}) {\n const logger2 = this._logger.create(\"createSignoutRequest\");\n const url = await this.metadataService.getEndSessionEndpoint();\n if (!url) {\n logger2.throw(new Error(\"No end session endpoint\"));\n throw null;\n }\n logger2.debug(\"Received end session endpoint\", url);\n if (!client_id && post_logout_redirect_uri && !id_token_hint) {\n client_id = this.settings.client_id;\n }\n const request = new SignoutRequest({\n url,\n id_token_hint,\n client_id,\n post_logout_redirect_uri,\n state_data: state,\n extraQueryParams,\n request_type,\n url_state\n });\n await this.clearStaleState();\n const signoutState = request.state;\n if (signoutState) {\n logger2.debug(\"Signout request has state to persist\");\n await this.settings.stateStore.set(signoutState.id, signoutState.toStorageString());\n }\n return request;\n }\n async readSignoutResponseState(url, removeState = false) {\n const logger2 = this._logger.create(\"readSignoutResponseState\");\n const response = new SignoutResponse(UrlUtils.readParams(url, this.settings.response_mode));\n if (!response.state) {\n logger2.debug(\"No state in response\");\n if (response.error) {\n logger2.warn(\"Response was error:\", response.error);\n throw new ErrorResponse(response);\n }\n return { state: void 0, response };\n }\n const storedStateString = await this.settings.stateStore[removeState ? \"remove\" : \"get\"](response.state);\n if (!storedStateString) {\n logger2.throw(new Error(\"No matching state found in storage\"));\n throw null;\n }\n const state = await State.fromStorageString(storedStateString);\n return { state, response };\n }\n async processSignoutResponse(url) {\n const logger2 = this._logger.create(\"processSignoutResponse\");\n const { state, response } = await this.readSignoutResponseState(url, true);\n if (state) {\n logger2.debug(\"Received state from storage; validating response\");\n this._validator.validateSignoutResponse(response, state);\n } else {\n logger2.debug(\"No state from storage; skipping response validation\");\n }\n return response;\n }\n clearStaleState() {\n this._logger.create(\"clearStaleState\");\n return State.clearStaleState(this.settings.stateStore, this.settings.staleStateAgeInSeconds);\n }\n async revokeToken(token, type) {\n this._logger.create(\"revokeToken\");\n return await this._tokenClient.revoke({\n token,\n token_type_hint: type\n });\n }\n};\n\n// src/SessionMonitor.ts\nvar SessionMonitor = class {\n constructor(_userManager) {\n this._userManager = _userManager;\n this._logger = new Logger(\"SessionMonitor\");\n this._start = async (user) => {\n const session_state = user.session_state;\n if (!session_state) {\n return;\n }\n const logger2 = this._logger.create(\"_start\");\n if (user.profile) {\n this._sub = user.profile.sub;\n logger2.debug(\"session_state\", session_state, \", sub\", this._sub);\n } else {\n this._sub = void 0;\n logger2.debug(\"session_state\", session_state, \", anonymous user\");\n }\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.start(session_state);\n return;\n }\n try {\n const url = await this._userManager.metadataService.getCheckSessionIframe();\n if (url) {\n logger2.debug(\"initializing check session iframe\");\n const client_id = this._userManager.settings.client_id;\n const intervalInSeconds = this._userManager.settings.checkSessionIntervalInSeconds;\n const stopOnError = this._userManager.settings.stopCheckSessionOnError;\n const checkSessionIFrame = new CheckSessionIFrame(this._callback, client_id, url, intervalInSeconds, stopOnError);\n await checkSessionIFrame.load();\n this._checkSessionIFrame = checkSessionIFrame;\n checkSessionIFrame.start(session_state);\n } else {\n logger2.warn(\"no check session iframe found in the metadata\");\n }\n } catch (err) {\n logger2.error(\"Error from getCheckSessionIframe:\", err instanceof Error ? err.message : err);\n }\n };\n this._stop = () => {\n const logger2 = this._logger.create(\"_stop\");\n this._sub = void 0;\n if (this._checkSessionIFrame) {\n this._checkSessionIFrame.stop();\n }\n if (this._userManager.settings.monitorAnonymousSession) {\n const timerHandle = setInterval(async () => {\n clearInterval(timerHandle);\n try {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub ? {\n sub: session.sub\n } : null\n };\n void this._start(tmpUser);\n }\n } catch (err) {\n logger2.error(\"error from querySessionStatus\", err instanceof Error ? err.message : err);\n }\n }, 1e3);\n }\n };\n this._callback = async () => {\n const logger2 = this._logger.create(\"_callback\");\n try {\n const session = await this._userManager.querySessionStatus();\n let raiseEvent = true;\n if (session && this._checkSessionIFrame) {\n if (session.sub === this._sub) {\n raiseEvent = false;\n this._checkSessionIFrame.start(session.session_state);\n logger2.debug(\"same sub still logged in at OP, session state has changed, restarting check session iframe; session_state\", session.session_state);\n await this._userManager.events._raiseUserSessionChanged();\n } else {\n logger2.debug(\"different subject signed into OP\", session.sub);\n }\n } else {\n logger2.debug(\"subject no longer signed into OP\");\n }\n if (raiseEvent) {\n if (this._sub) {\n await this._userManager.events._raiseUserSignedOut();\n } else {\n await this._userManager.events._raiseUserSignedIn();\n }\n } else {\n logger2.debug(\"no change in session detected, no event to raise\");\n }\n } catch (err) {\n if (this._sub) {\n logger2.debug(\"Error calling queryCurrentSigninSession; raising signed out event\", err);\n await this._userManager.events._raiseUserSignedOut();\n }\n }\n };\n if (!_userManager) {\n this._logger.throw(new Error(\"No user manager passed\"));\n }\n this._userManager.events.addUserLoaded(this._start);\n this._userManager.events.addUserUnloaded(this._stop);\n this._init().catch((err) => {\n this._logger.error(err);\n });\n }\n async _init() {\n this._logger.create(\"_init\");\n const user = await this._userManager.getUser();\n if (user) {\n void this._start(user);\n } else if (this._userManager.settings.monitorAnonymousSession) {\n const session = await this._userManager.querySessionStatus();\n if (session) {\n const tmpUser = {\n session_state: session.session_state,\n profile: session.sub ? {\n sub: session.sub\n } : null\n };\n void this._start(tmpUser);\n }\n }\n }\n};\n\n// src/User.ts\nvar User = class _User {\n constructor(args) {\n var _a;\n this.id_token = args.id_token;\n this.session_state = (_a = args.session_state) != null ? _a : null;\n this.access_token = args.access_token;\n this.refresh_token = args.refresh_token;\n this.token_type = args.token_type;\n this.scope = args.scope;\n this.profile = args.profile;\n this.expires_at = args.expires_at;\n this.state = args.userState;\n this.url_state = args.url_state;\n }\n /** Computed number of seconds the access token has remaining. */\n get expires_in() {\n if (this.expires_at === void 0) {\n return void 0;\n }\n return this.expires_at - Timer.getEpochTime();\n }\n set expires_in(value) {\n if (value !== void 0) {\n this.expires_at = Math.floor(value) + Timer.getEpochTime();\n }\n }\n /** Computed value indicating if the access token is expired. */\n get expired() {\n const expires_in = this.expires_in;\n if (expires_in === void 0) {\n return void 0;\n }\n return expires_in <= 0;\n }\n /** Array representing the parsed values from the `scope`. */\n get scopes() {\n var _a, _b;\n return (_b = (_a = this.scope) == null ? void 0 : _a.split(\" \")) != null ? _b : [];\n }\n toStorageString() {\n new Logger(\"User\").create(\"toStorageString\");\n return JSON.stringify({\n id_token: this.id_token,\n session_state: this.session_state,\n access_token: this.access_token,\n refresh_token: this.refresh_token,\n token_type: this.token_type,\n scope: this.scope,\n profile: this.profile,\n expires_at: this.expires_at\n });\n }\n static fromStorageString(storageString) {\n Logger.createStatic(\"User\", \"fromStorageString\");\n return new _User(JSON.parse(storageString));\n }\n};\n\n// src/navigators/AbstractChildWindow.ts\nvar messageSource = \"oidc-client\";\nvar AbstractChildWindow = class {\n constructor() {\n this._abort = new Event(\"Window navigation aborted\");\n this._disposeHandlers = /* @__PURE__ */ new Set();\n this._window = null;\n }\n async navigate(params) {\n const logger2 = this._logger.create(\"navigate\");\n if (!this._window) {\n throw new Error(\"Attempted to navigate on a disposed window\");\n }\n logger2.debug(\"setting URL in window\");\n this._window.location.replace(params.url);\n const { url, keepOpen } = await new Promise((resolve, reject) => {\n const listener = (e) => {\n var _a;\n const data = e.data;\n const origin = (_a = params.scriptOrigin) != null ? _a : window.location.origin;\n if (e.origin !== origin || (data == null ? void 0 : data.source) !== messageSource) {\n return;\n }\n try {\n const state = UrlUtils.readParams(data.url, params.response_mode).get(\"state\");\n if (!state) {\n logger2.warn(\"no state found in response url\");\n }\n if (e.source !== this._window && state !== params.state) {\n return;\n }\n } catch {\n this._dispose();\n reject(new Error(\"Invalid response from window\"));\n }\n resolve(data);\n };\n window.addEventListener(\"message\", listener, false);\n this._disposeHandlers.add(() => window.removeEventListener(\"message\", listener, false));\n const channel = new BroadcastChannel(`oidc-client-popup-${params.state}`);\n channel.addEventListener(\"message\", listener, false);\n this._disposeHandlers.add(() => channel.close());\n this._disposeHandlers.add(this._abort.addHandler((reason) => {\n this._dispose();\n reject(reason);\n }));\n });\n logger2.debug(\"got response from window\");\n this._dispose();\n if (!keepOpen) {\n this.close();\n }\n return { url };\n }\n _dispose() {\n this._logger.create(\"_dispose\");\n for (const dispose of this._disposeHandlers) {\n dispose();\n }\n this._disposeHandlers.clear();\n }\n static _notifyParent(parent, url, keepOpen = false, targetOrigin = window.location.origin) {\n const msgData = {\n source: messageSource,\n url,\n keepOpen\n };\n const logger2 = new Logger(\"_notifyParent\");\n if (parent) {\n logger2.debug(\"With parent. Using parent.postMessage.\");\n parent.postMessage(msgData, targetOrigin);\n } else {\n logger2.debug(\"No parent. Using BroadcastChannel.\");\n const state = new URL(url).searchParams.get(\"state\");\n if (!state) {\n throw new Error(\"No parent and no state in URL. Can't complete notification.\");\n }\n const channel = new BroadcastChannel(`oidc-client-popup-${state}`);\n channel.postMessage(msgData);\n channel.close();\n }\n }\n};\n\n// src/UserManagerSettings.ts\nvar DefaultPopupWindowFeatures = {\n location: false,\n toolbar: false,\n height: 640,\n closePopupWindowAfterInSeconds: -1\n};\nvar DefaultPopupTarget = \"_blank\";\nvar DefaultAccessTokenExpiringNotificationTimeInSeconds = 60;\nvar DefaultCheckSessionIntervalInSeconds = 2;\nvar DefaultSilentRequestTimeoutInSeconds = 10;\nvar UserManagerSettingsStore = class extends OidcClientSettingsStore {\n constructor(args) {\n const {\n popup_redirect_uri = args.redirect_uri,\n popup_post_logout_redirect_uri = args.post_logout_redirect_uri,\n popupWindowFeatures = DefaultPopupWindowFeatures,\n popupWindowTarget = DefaultPopupTarget,\n redirectMethod = \"assign\",\n redirectTarget = \"self\",\n iframeNotifyParentOrigin = args.iframeNotifyParentOrigin,\n iframeScriptOrigin = args.iframeScriptOrigin,\n requestTimeoutInSeconds,\n silent_redirect_uri = args.redirect_uri,\n silentRequestTimeoutInSeconds,\n automaticSilentRenew = true,\n validateSubOnSilentRenew = true,\n includeIdTokenInSilentRenew = false,\n monitorSession = false,\n monitorAnonymousSession = false,\n checkSessionIntervalInSeconds = DefaultCheckSessionIntervalInSeconds,\n query_status_response_type = \"code\",\n stopCheckSessionOnError = true,\n revokeTokenTypes = [\"access_token\", \"refresh_token\"],\n revokeTokensOnSignout = false,\n includeIdTokenInSilentSignout = false,\n accessTokenExpiringNotificationTimeInSeconds = DefaultAccessTokenExpiringNotificationTimeInSeconds,\n userStore\n } = args;\n super(args);\n this.popup_redirect_uri = popup_redirect_uri;\n this.popup_post_logout_redirect_uri = popup_post_logout_redirect_uri;\n this.popupWindowFeatures = popupWindowFeatures;\n this.popupWindowTarget = popupWindowTarget;\n this.redirectMethod = redirectMethod;\n this.redirectTarget = redirectTarget;\n this.iframeNotifyParentOrigin = iframeNotifyParentOrigin;\n this.iframeScriptOrigin = iframeScriptOrigin;\n this.silent_redirect_uri = silent_redirect_uri;\n this.silentRequestTimeoutInSeconds = silentRequestTimeoutInSeconds || requestTimeoutInSeconds || DefaultSilentRequestTimeoutInSeconds;\n this.automaticSilentRenew = automaticSilentRenew;\n this.validateSubOnSilentRenew = validateSubOnSilentRenew;\n this.includeIdTokenInSilentRenew = includeIdTokenInSilentRenew;\n this.monitorSession = monitorSession;\n this.monitorAnonymousSession = monitorAnonymousSession;\n this.checkSessionIntervalInSeconds = checkSessionIntervalInSeconds;\n this.stopCheckSessionOnError = stopCheckSessionOnError;\n this.query_status_response_type = query_status_response_type;\n this.revokeTokenTypes = revokeTokenTypes;\n this.revokeTokensOnSignout = revokeTokensOnSignout;\n this.includeIdTokenInSilentSignout = includeIdTokenInSilentSignout;\n this.accessTokenExpiringNotificationTimeInSeconds = accessTokenExpiringNotificationTimeInSeconds;\n if (userStore) {\n this.userStore = userStore;\n } else {\n const store = typeof window !== \"undefined\" ? window.sessionStorage : new InMemoryWebStorage();\n this.userStore = new WebStorageStateStore({ store });\n }\n }\n};\n\n// src/navigators/IFrameWindow.ts\nvar IFrameWindow = class _IFrameWindow extends AbstractChildWindow {\n constructor({\n silentRequestTimeoutInSeconds = DefaultSilentRequestTimeoutInSeconds\n }) {\n super();\n this._logger = new Logger(\"IFrameWindow\");\n this._timeoutInSeconds = silentRequestTimeoutInSeconds;\n this._frame = _IFrameWindow.createHiddenIframe();\n this._window = this._frame.contentWindow;\n }\n static createHiddenIframe() {\n const iframe = window.document.createElement(\"iframe\");\n iframe.style.visibility = \"hidden\";\n iframe.style.position = \"fixed\";\n iframe.style.left = \"-1000px\";\n iframe.style.top = \"0\";\n iframe.width = \"0\";\n iframe.height = \"0\";\n window.document.body.appendChild(iframe);\n return iframe;\n }\n async navigate(params) {\n this._logger.debug(\"navigate: Using timeout of:\", this._timeoutInSeconds);\n const timer = setTimeout(() => void this._abort.raise(new ErrorTimeout(\"IFrame timed out without a response\")), this._timeoutInSeconds * 1e3);\n this._disposeHandlers.add(() => clearTimeout(timer));\n return await super.navigate(params);\n }\n close() {\n var _a;\n if (this._frame) {\n if (this._frame.parentNode) {\n this._frame.addEventListener(\"load\", (ev) => {\n var _a2;\n const frame = ev.target;\n (_a2 = frame.parentNode) == null ? void 0 : _a2.removeChild(frame);\n void this._abort.raise(new Error(\"IFrame removed from DOM\"));\n }, true);\n (_a = this._frame.contentWindow) == null ? void 0 : _a.location.replace(\"about:blank\");\n }\n this._frame = null;\n }\n this._window = null;\n }\n static notifyParent(url, targetOrigin) {\n return super._notifyParent(window.parent, url, false, targetOrigin);\n }\n};\n\n// src/navigators/IFrameNavigator.ts\nvar IFrameNavigator = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"IFrameNavigator\");\n }\n async prepare({\n silentRequestTimeoutInSeconds = this._settings.silentRequestTimeoutInSeconds\n }) {\n return new IFrameWindow({ silentRequestTimeoutInSeconds });\n }\n async callback(url) {\n this._logger.create(\"callback\");\n IFrameWindow.notifyParent(url, this._settings.iframeNotifyParentOrigin);\n }\n};\n\n// src/navigators/PopupWindow.ts\nvar checkForPopupClosedInterval = 500;\nvar second = 1e3;\nvar PopupWindow = class extends AbstractChildWindow {\n constructor({\n popupWindowTarget = DefaultPopupTarget,\n popupWindowFeatures = {},\n popupSignal,\n popupAbortOnClose\n }) {\n super();\n this._logger = new Logger(\"PopupWindow\");\n const centeredPopup = PopupUtils.center({ ...DefaultPopupWindowFeatures, ...popupWindowFeatures });\n this._window = window.open(void 0, popupWindowTarget, PopupUtils.serialize(centeredPopup));\n this.abortOnClose = Boolean(popupAbortOnClose);\n if (popupSignal) {\n popupSignal.addEventListener(\"abort\", () => {\n var _a;\n void this._abort.raise(new Error((_a = popupSignal.reason) != null ? _a : \"Popup aborted\"));\n });\n }\n if (popupWindowFeatures.closePopupWindowAfterInSeconds && popupWindowFeatures.closePopupWindowAfterInSeconds > 0) {\n setTimeout(() => {\n if (!this._window || typeof this._window.closed !== \"boolean\" || this._window.closed) {\n void this._abort.raise(new Error(\"Popup blocked by user\"));\n return;\n }\n this.close();\n }, popupWindowFeatures.closePopupWindowAfterInSeconds * second);\n }\n }\n async navigate(params) {\n var _a;\n (_a = this._window) == null ? void 0 : _a.focus();\n const popupClosedInterval = setInterval(() => {\n if (!this._window || this._window.closed) {\n this._logger.debug(\"Popup closed by user or isolated by redirect\");\n clearPopupClosedInterval();\n this._disposeHandlers.delete(clearPopupClosedInterval);\n if (this.abortOnClose) {\n void this._abort.raise(new Error(\"Popup closed by user\"));\n }\n }\n }, checkForPopupClosedInterval);\n const clearPopupClosedInterval = () => clearInterval(popupClosedInterval);\n this._disposeHandlers.add(clearPopupClosedInterval);\n return await super.navigate(params);\n }\n close() {\n if (this._window) {\n if (!this._window.closed) {\n this._window.close();\n void this._abort.raise(new Error(\"Popup closed\"));\n }\n }\n this._window = null;\n }\n static notifyOpener(url, keepOpen) {\n super._notifyParent(window.opener, url, keepOpen);\n if (!keepOpen && !window.opener) {\n window.close();\n }\n }\n};\n\n// src/navigators/PopupNavigator.ts\nvar PopupNavigator = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"PopupNavigator\");\n }\n async prepare({\n popupWindowFeatures = this._settings.popupWindowFeatures,\n popupWindowTarget = this._settings.popupWindowTarget,\n popupSignal,\n popupAbortOnClose\n }) {\n return new PopupWindow({\n popupWindowFeatures,\n popupWindowTarget,\n popupSignal,\n popupAbortOnClose\n });\n }\n async callback(url, { keepOpen = false }) {\n this._logger.create(\"callback\");\n PopupWindow.notifyOpener(url, keepOpen);\n }\n};\n\n// src/navigators/RedirectNavigator.ts\nvar RedirectNavigator = class {\n constructor(_settings) {\n this._settings = _settings;\n this._logger = new Logger(\"RedirectNavigator\");\n }\n async prepare({\n redirectMethod = this._settings.redirectMethod,\n redirectTarget = this._settings.redirectTarget\n }) {\n var _a;\n this._logger.create(\"prepare\");\n let targetWindow = window.self;\n if (redirectTarget === \"top\") {\n targetWindow = (_a = window.top) != null ? _a : window.self;\n }\n const redirect = targetWindow.location[redirectMethod].bind(targetWindow.location);\n let abort;\n return {\n navigate: async (params) => {\n this._logger.create(\"navigate\");\n const promise = new Promise((resolve, reject) => {\n abort = reject;\n window.addEventListener(\"pageshow\", () => resolve(window.location.href));\n redirect(params.url);\n });\n return await promise;\n },\n close: () => {\n this._logger.create(\"close\");\n abort == null ? void 0 : abort(new Error(\"Redirect aborted\"));\n targetWindow.stop();\n }\n };\n }\n async callback() {\n return;\n }\n};\n\n// src/UserManagerEvents.ts\nvar UserManagerEvents = class extends AccessTokenEvents {\n constructor(settings) {\n super({ expiringNotificationTimeInSeconds: settings.accessTokenExpiringNotificationTimeInSeconds });\n this._logger = new Logger(\"UserManagerEvents\");\n this._userLoaded = new Event(\"User loaded\");\n this._userUnloaded = new Event(\"User unloaded\");\n this._silentRenewError = new Event(\"Silent renew error\");\n this._userSignedIn = new Event(\"User signed in\");\n this._userSignedOut = new Event(\"User signed out\");\n this._userSessionChanged = new Event(\"User session changed\");\n }\n async load(user, raiseEvent = true) {\n await super.load(user);\n if (raiseEvent) {\n await this._userLoaded.raise(user);\n }\n }\n async unload() {\n await super.unload();\n await this._userUnloaded.raise();\n }\n /**\n * Add callback: Raised when a user session has been established (or re-established).\n */\n addUserLoaded(cb) {\n return this._userLoaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been established (or re-established).\n */\n removeUserLoaded(cb) {\n return this._userLoaded.removeHandler(cb);\n }\n /**\n * Add callback: Raised when a user session has been terminated.\n */\n addUserUnloaded(cb) {\n return this._userUnloaded.addHandler(cb);\n }\n /**\n * Remove callback: Raised when a user session has been terminated.\n */\n removeUserUnloaded(cb) {\n return this._userUnloaded.removeHandler(cb);\n }\n /**\n * Add callback: Raised when the automatic silent renew has failed.\n */\n addSilentRenewError(cb) {\n return this._silentRenewError.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the automatic silent renew has failed.\n */\n removeSilentRenewError(cb) {\n return this._silentRenewError.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseSilentRenewError(e) {\n await this._silentRenewError.raise(e);\n }\n /**\n * Add callback: Raised when the user is signed in (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n addUserSignedIn(cb) {\n return this._userSignedIn.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user is signed in (when `monitorSession` is set).\n */\n removeUserSignedIn(cb) {\n this._userSignedIn.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseUserSignedIn() {\n await this._userSignedIn.raise();\n }\n /**\n * Add callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n addUserSignedOut(cb) {\n return this._userSignedOut.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user's sign-in status at the OP has changed (when `monitorSession` is set).\n */\n removeUserSignedOut(cb) {\n this._userSignedOut.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseUserSignedOut() {\n await this._userSignedOut.raise();\n }\n /**\n * Add callback: Raised when the user session changed (when `monitorSession` is set).\n * @see {@link UserManagerSettings.monitorSession}\n */\n addUserSessionChanged(cb) {\n return this._userSessionChanged.addHandler(cb);\n }\n /**\n * Remove callback: Raised when the user session changed (when `monitorSession` is set).\n */\n removeUserSessionChanged(cb) {\n this._userSessionChanged.removeHandler(cb);\n }\n /**\n * @internal\n */\n async _raiseUserSessionChanged() {\n await this._userSessionChanged.raise();\n }\n};\n\n// src/SilentRenewService.ts\nvar SilentRenewService = class {\n constructor(_userManager) {\n this._userManager = _userManager;\n this._logger = new Logger(\"SilentRenewService\");\n this._isStarted = false;\n this._retryTimer = new Timer(\"Retry Silent Renew\");\n this._tokenExpiring = async () => {\n const logger2 = this._logger.create(\"_tokenExpiring\");\n try {\n await this._userManager.signinSilent();\n logger2.debug(\"silent token renewal successful\");\n } catch (err) {\n if (err instanceof ErrorTimeout) {\n logger2.warn(\"ErrorTimeout from signinSilent:\", err, \"retry in 5s\");\n this._retryTimer.init(5);\n return;\n }\n logger2.error(\"Error from signinSilent:\", err);\n await this._userManager.events._raiseSilentRenewError(err);\n }\n };\n }\n async start() {\n const logger2 = this._logger.create(\"start\");\n if (!this._isStarted) {\n this._isStarted = true;\n this._userManager.events.addAccessTokenExpiring(this._tokenExpiring);\n this._retryTimer.addHandler(this._tokenExpiring);\n try {\n await this._userManager.getUser();\n } catch (err) {\n logger2.error(\"getUser error\", err);\n }\n }\n }\n stop() {\n if (this._isStarted) {\n this._retryTimer.cancel();\n this._retryTimer.removeHandler(this._tokenExpiring);\n this._userManager.events.removeAccessTokenExpiring(this._tokenExpiring);\n this._isStarted = false;\n }\n }\n};\n\n// src/RefreshState.ts\nvar RefreshState = class {\n constructor(args) {\n this.refresh_token = args.refresh_token;\n this.id_token = args.id_token;\n this.session_state = args.session_state;\n this.scope = args.scope;\n this.profile = args.profile;\n this.data = args.state;\n }\n};\n\n// src/UserManager.ts\nvar UserManager = class {\n constructor(settings, redirectNavigator, popupNavigator, iframeNavigator) {\n this._logger = new Logger(\"UserManager\");\n this.settings = new UserManagerSettingsStore(settings);\n this._client = new OidcClient(settings);\n this._redirectNavigator = redirectNavigator != null ? redirectNavigator : new RedirectNavigator(this.settings);\n this._popupNavigator = popupNavigator != null ? popupNavigator : new PopupNavigator(this.settings);\n this._iframeNavigator = iframeNavigator != null ? iframeNavigator : new IFrameNavigator(this.settings);\n this._events = new UserManagerEvents(this.settings);\n this._silentRenewService = new SilentRenewService(this);\n if (this.settings.automaticSilentRenew) {\n this.startSilentRenew();\n }\n this._sessionMonitor = null;\n if (this.settings.monitorSession) {\n this._sessionMonitor = new SessionMonitor(this);\n }\n }\n /**\n * Get object used to register for events raised by the `UserManager`.\n */\n get events() {\n return this._events;\n }\n /**\n * Get object used to access the metadata configuration of the identity provider.\n */\n get metadataService() {\n return this._client.metadataService;\n }\n /**\n * Load the `User` object for the currently authenticated user.\n *\n * @param raiseEvent - If `true`, the `UserLoaded` event will be raised. Defaults to false.\n * @returns A promise\n */\n async getUser(raiseEvent = false) {\n const logger2 = this._logger.create(\"getUser\");\n const user = await this._loadUser();\n if (user) {\n logger2.info(\"user loaded\");\n await this._events.load(user, raiseEvent);\n return user;\n }\n logger2.info(\"user not found in storage\");\n return null;\n }\n /**\n * Remove from any storage the currently authenticated user.\n *\n * @returns A promise\n */\n async removeUser() {\n const logger2 = this._logger.create(\"removeUser\");\n await this.storeUser(null);\n logger2.info(\"user removed from storage\");\n await this._events.unload();\n }\n /**\n * Trigger a redirect of the current window to the authorization endpoint.\n *\n * @returns A promise\n *\n * @throws `Error` In cases of wrong authentication.\n */\n async signinRedirect(args = {}) {\n var _a;\n this._logger.create(\"signinRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n let dpopJkt;\n if ((_a = this.settings.dpop) == null ? void 0 : _a.bind_authorization_code) {\n dpopJkt = await this.generateDPoPJkt(this.settings.dpop);\n }\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signinStart({\n request_type: \"si:r\",\n dpopJkt,\n ...requestArgs\n }, handle);\n }\n /**\n * Process the response (callback) from the authorization endpoint.\n * It is recommended to use {@link UserManager.signinCallback} instead.\n *\n * @returns A promise containing the authenticated `User`.\n *\n * @see {@link UserManager.signinCallback}\n */\n async signinRedirectCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signinRedirectCallback\");\n const user = await this._signinEnd(url);\n if (user.profile && user.profile.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n return user;\n }\n /**\n * Trigger the signin with user/password.\n *\n * @returns A promise containing the authenticated `User`.\n * @throws {@link ErrorResponse} In cases of wrong authentication.\n */\n async signinResourceOwnerCredentials({\n username,\n password,\n skipUserInfo = false\n }) {\n const logger2 = this._logger.create(\"signinResourceOwnerCredential\");\n const signinResponse = await this._client.processResourceOwnerPasswordCredentials({\n username,\n password,\n skipUserInfo,\n extraTokenParams: this.settings.extraTokenParams\n });\n logger2.debug(\"got signin response\");\n const user = await this._buildUser(signinResponse);\n if (user.profile && user.profile.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n return user;\n }\n /**\n * Trigger a request (via a popup window) to the authorization endpoint.\n *\n * @returns A promise containing the authenticated `User`.\n * @throws `Error` In cases of wrong authentication.\n */\n async signinPopup(args = {}) {\n var _a;\n const logger2 = this._logger.create(\"signinPopup\");\n let dpopJkt;\n if ((_a = this.settings.dpop) == null ? void 0 : _a.bind_authorization_code) {\n dpopJkt = await this.generateDPoPJkt(this.settings.dpop);\n }\n const {\n popupWindowFeatures,\n popupWindowTarget,\n popupSignal,\n popupAbortOnClose,\n ...requestArgs\n } = args;\n const url = this.settings.popup_redirect_uri;\n if (!url) {\n logger2.throw(new Error(\"No popup_redirect_uri configured\"));\n }\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget, popupSignal, popupAbortOnClose });\n const user = await this._signin({\n request_type: \"si:p\",\n redirect_uri: url,\n display: \"popup\",\n dpopJkt,\n ...requestArgs\n }, handle);\n if (user) {\n if (user.profile && user.profile.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n }\n return user;\n }\n /**\n * Notify the opening window of response (callback) from the authorization endpoint.\n * It is recommended to use {@link UserManager.signinCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signinCallback}\n */\n async signinPopupCallback(url = window.location.href, keepOpen = false) {\n const logger2 = this._logger.create(\"signinPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger2.info(\"success\");\n }\n /**\n * Trigger a silent request (via refresh token or an iframe) to the authorization endpoint.\n *\n * @returns A promise that contains the authenticated `User`.\n */\n async signinSilent(args = {}) {\n var _a, _b;\n const logger2 = this._logger.create(\"signinSilent\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n let user = await this._loadUser();\n if (!args.forceIframeAuth && (user == null ? void 0 : user.refresh_token)) {\n logger2.debug(\"using refresh token\");\n const state = new RefreshState(user);\n return await this._useRefreshToken({\n state,\n redirect_uri: requestArgs.redirect_uri,\n resource: requestArgs.resource,\n extraTokenParams: requestArgs.extraTokenParams,\n timeoutInSeconds: silentRequestTimeoutInSeconds\n });\n }\n let dpopJkt;\n if ((_a = this.settings.dpop) == null ? void 0 : _a.bind_authorization_code) {\n dpopJkt = await this.generateDPoPJkt(this.settings.dpop);\n }\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger2.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n let verifySub;\n if (user && this.settings.validateSubOnSilentRenew) {\n logger2.debug(\"subject prior to silent renew:\", user.profile.sub);\n verifySub = user.profile.sub;\n }\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n user = await this._signin({\n request_type: \"si:s\",\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user == null ? void 0 : user.id_token : void 0,\n dpopJkt,\n ...requestArgs\n }, handle, verifySub);\n if (user) {\n if ((_b = user.profile) == null ? void 0 : _b.sub) {\n logger2.info(\"success, signed in subject\", user.profile.sub);\n } else {\n logger2.info(\"no subject\");\n }\n }\n return user;\n }\n async _useRefreshToken(args) {\n const response = await this._client.useRefreshToken({\n timeoutInSeconds: this.settings.silentRequestTimeoutInSeconds,\n ...args\n });\n const user = new User({ ...args.state, ...response });\n await this.storeUser(user);\n await this._events.load(user);\n return user;\n }\n /**\n *\n * Notify the parent window of response (callback) from the authorization endpoint.\n * It is recommended to use {@link UserManager.signinCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signinCallback}\n */\n async signinSilentCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signinSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger2.info(\"success\");\n }\n /**\n * Process any response (callback) from the authorization endpoint, by dispatching the request_type\n * and executing one of the following functions:\n * - {@link UserManager.signinRedirectCallback}\n * - {@link UserManager.signinPopupCallback}\n * - {@link UserManager.signinSilentCallback}\n *\n * @throws `Error` If request_type is unknown or signin cannot be processed.\n */\n async signinCallback(url = window.location.href) {\n const { state } = await this._client.readSigninResponseState(url);\n switch (state.request_type) {\n case \"si:r\":\n return await this.signinRedirectCallback(url);\n case \"si:p\":\n await this.signinPopupCallback(url);\n break;\n case \"si:s\":\n await this.signinSilentCallback(url);\n break;\n default:\n throw new Error(\"invalid response_type in state\");\n }\n return void 0;\n }\n /**\n * Process any response (callback) from the end session endpoint, by dispatching the request_type\n * and executing one of the following functions:\n * - {@link UserManager.signoutRedirectCallback}\n * - {@link UserManager.signoutPopupCallback}\n * - {@link UserManager.signoutSilentCallback}\n *\n * @throws `Error` If request_type is unknown or signout cannot be processed.\n */\n async signoutCallback(url = window.location.href, keepOpen = false) {\n const { state } = await this._client.readSignoutResponseState(url);\n if (!state) {\n return void 0;\n }\n switch (state.request_type) {\n case \"so:r\":\n return await this.signoutRedirectCallback(url);\n case \"so:p\":\n await this.signoutPopupCallback(url, keepOpen);\n break;\n case \"so:s\":\n await this.signoutSilentCallback(url);\n break;\n default:\n throw new Error(\"invalid response_type in state\");\n }\n return void 0;\n }\n /**\n * Query OP for user's current signin status.\n *\n * @returns A promise object with session_state and subject identifier.\n */\n async querySessionStatus(args = {}) {\n const logger2 = this._logger.create(\"querySessionStatus\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n const url = this.settings.silent_redirect_uri;\n if (!url) {\n logger2.throw(new Error(\"No silent_redirect_uri configured\"));\n }\n const user = await this._loadUser();\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n const navResponse = await this._signinStart({\n request_type: \"si:s\",\n // this acts like a signin silent\n redirect_uri: url,\n prompt: \"none\",\n id_token_hint: this.settings.includeIdTokenInSilentRenew ? user == null ? void 0 : user.id_token : void 0,\n response_type: this.settings.query_status_response_type,\n scope: \"openid\",\n skipUserInfo: true,\n ...requestArgs\n }, handle);\n try {\n const extraHeaders = {};\n const signinResponse = await this._client.processSigninResponse(navResponse.url, extraHeaders);\n logger2.debug(\"got signin response\");\n if (signinResponse.session_state && signinResponse.profile.sub) {\n logger2.info(\"success for subject\", signinResponse.profile.sub);\n return {\n session_state: signinResponse.session_state,\n sub: signinResponse.profile.sub\n };\n }\n logger2.info(\"success, user not authenticated\");\n return null;\n } catch (err) {\n if (this.settings.monitorAnonymousSession && err instanceof ErrorResponse) {\n switch (err.error) {\n case \"login_required\":\n case \"consent_required\":\n case \"interaction_required\":\n case \"account_selection_required\":\n logger2.info(\"success for anonymous user\");\n return {\n session_state: err.session_state\n };\n }\n }\n throw err;\n }\n }\n async _signin(args, handle, verifySub) {\n const navResponse = await this._signinStart(args, handle);\n return await this._signinEnd(navResponse.url, verifySub);\n }\n async _signinStart(args, handle) {\n const logger2 = this._logger.create(\"_signinStart\");\n try {\n const signinRequest = await this._client.createSigninRequest(args);\n logger2.debug(\"got signin request\");\n return await handle.navigate({\n url: signinRequest.url,\n state: signinRequest.state.id,\n response_mode: signinRequest.state.response_mode,\n scriptOrigin: this.settings.iframeScriptOrigin\n });\n } catch (err) {\n logger2.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n async _signinEnd(url, verifySub) {\n const logger2 = this._logger.create(\"_signinEnd\");\n const extraHeaders = {};\n const signinResponse = await this._client.processSigninResponse(url, extraHeaders);\n logger2.debug(\"got signin response\");\n const user = await this._buildUser(signinResponse, verifySub);\n return user;\n }\n async _buildUser(signinResponse, verifySub) {\n const logger2 = this._logger.create(\"_buildUser\");\n const user = new User(signinResponse);\n if (verifySub) {\n if (verifySub !== user.profile.sub) {\n logger2.debug(\"current user does not match user returned from signin. sub from signin:\", user.profile.sub);\n throw new ErrorResponse({ ...signinResponse, error: \"login_required\" });\n }\n logger2.debug(\"current user matches user returned from signin\");\n }\n await this.storeUser(user);\n logger2.debug(\"user stored\");\n await this._events.load(user);\n return user;\n }\n /**\n * Trigger a redirect of the current window to the end session endpoint.\n *\n * @returns A promise\n */\n async signoutRedirect(args = {}) {\n const logger2 = this._logger.create(\"signoutRedirect\");\n const {\n redirectMethod,\n ...requestArgs\n } = args;\n const handle = await this._redirectNavigator.prepare({ redirectMethod });\n await this._signoutStart({\n request_type: \"so:r\",\n post_logout_redirect_uri: this.settings.post_logout_redirect_uri,\n ...requestArgs\n }, handle);\n logger2.info(\"success\");\n }\n /**\n * Process response (callback) from the end session endpoint.\n * It is recommended to use {@link UserManager.signoutCallback} instead.\n *\n * @returns A promise containing signout response\n *\n * @see {@link UserManager.signoutCallback}\n */\n async signoutRedirectCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signoutRedirectCallback\");\n const response = await this._signoutEnd(url);\n logger2.info(\"success\");\n return response;\n }\n /**\n * Trigger a redirect of a popup window to the end session endpoint.\n *\n * @returns A promise\n */\n async signoutPopup(args = {}) {\n const logger2 = this._logger.create(\"signoutPopup\");\n const {\n popupWindowFeatures,\n popupWindowTarget,\n popupSignal,\n ...requestArgs\n } = args;\n const url = this.settings.popup_post_logout_redirect_uri;\n const handle = await this._popupNavigator.prepare({ popupWindowFeatures, popupWindowTarget, popupSignal });\n await this._signout({\n request_type: \"so:p\",\n post_logout_redirect_uri: url,\n // we're putting a dummy entry in here because we\n // need a unique id from the state for notification\n // to the parent window, which is necessary if we\n // plan to return back to the client after signout\n // and so we can close the popup after signout\n state: url == null ? void 0 : {},\n ...requestArgs\n }, handle);\n logger2.info(\"success\");\n }\n /**\n * Process response (callback) from the end session endpoint from a popup window.\n * It is recommended to use {@link UserManager.signoutCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signoutCallback}\n */\n async signoutPopupCallback(url = window.location.href, keepOpen = false) {\n const logger2 = this._logger.create(\"signoutPopupCallback\");\n await this._popupNavigator.callback(url, { keepOpen });\n logger2.info(\"success\");\n }\n async _signout(args, handle) {\n const navResponse = await this._signoutStart(args, handle);\n return await this._signoutEnd(navResponse.url);\n }\n async _signoutStart(args = {}, handle) {\n var _a;\n const logger2 = this._logger.create(\"_signoutStart\");\n try {\n const user = await this._loadUser();\n logger2.debug(\"loaded current user from storage\");\n if (this.settings.revokeTokensOnSignout) {\n await this._revokeInternal(user);\n }\n const id_token = args.id_token_hint || user && user.id_token;\n if (id_token) {\n logger2.debug(\"setting id_token_hint in signout request\");\n args.id_token_hint = id_token;\n }\n await this.removeUser();\n logger2.debug(\"user removed, creating signout request\");\n const signoutRequest = await this._client.createSignoutRequest(args);\n logger2.debug(\"got signout request\");\n return await handle.navigate({\n url: signoutRequest.url,\n state: (_a = signoutRequest.state) == null ? void 0 : _a.id,\n scriptOrigin: this.settings.iframeScriptOrigin\n });\n } catch (err) {\n logger2.debug(\"error after preparing navigator, closing navigator window\");\n handle.close();\n throw err;\n }\n }\n async _signoutEnd(url) {\n const logger2 = this._logger.create(\"_signoutEnd\");\n const signoutResponse = await this._client.processSignoutResponse(url);\n logger2.debug(\"got signout response\");\n return signoutResponse;\n }\n /**\n * Trigger a silent request (via an iframe) to the end session endpoint.\n *\n * @returns A promise\n */\n async signoutSilent(args = {}) {\n var _a;\n const logger2 = this._logger.create(\"signoutSilent\");\n const {\n silentRequestTimeoutInSeconds,\n ...requestArgs\n } = args;\n const id_token_hint = this.settings.includeIdTokenInSilentSignout ? (_a = await this._loadUser()) == null ? void 0 : _a.id_token : void 0;\n const url = this.settings.popup_post_logout_redirect_uri;\n const handle = await this._iframeNavigator.prepare({ silentRequestTimeoutInSeconds });\n await this._signout({\n request_type: \"so:s\",\n post_logout_redirect_uri: url,\n id_token_hint,\n ...requestArgs\n }, handle);\n logger2.info(\"success\");\n }\n /**\n * Notify the parent window of response (callback) from the end session endpoint.\n * It is recommended to use {@link UserManager.signoutCallback} instead.\n *\n * @returns A promise\n *\n * @see {@link UserManager.signoutCallback}\n */\n async signoutSilentCallback(url = window.location.href) {\n const logger2 = this._logger.create(\"signoutSilentCallback\");\n await this._iframeNavigator.callback(url);\n logger2.info(\"success\");\n }\n async revokeTokens(types) {\n const user = await this._loadUser();\n await this._revokeInternal(user, types);\n }\n async _revokeInternal(user, types = this.settings.revokeTokenTypes) {\n const logger2 = this._logger.create(\"_revokeInternal\");\n if (!user) return;\n const typesPresent = types.filter((type) => typeof user[type] === \"string\");\n if (!typesPresent.length) {\n logger2.debug(\"no need to revoke due to no token(s)\");\n return;\n }\n for (const type of typesPresent) {\n await this._client.revokeToken(\n user[type],\n type\n );\n logger2.info(`${type} revoked successfully`);\n if (type !== \"access_token\") {\n user[type] = null;\n }\n }\n await this.storeUser(user);\n logger2.debug(\"user stored\");\n await this._events.load(user);\n }\n /**\n * Enables silent renew for the `UserManager`.\n */\n startSilentRenew() {\n this._logger.create(\"startSilentRenew\");\n void this._silentRenewService.start();\n }\n /**\n * Disables silent renew for the `UserManager`.\n */\n stopSilentRenew() {\n this._silentRenewService.stop();\n }\n get _userStoreKey() {\n return `user:${this.settings.authority}:${this.settings.client_id}`;\n }\n async _loadUser() {\n const logger2 = this._logger.create(\"_loadUser\");\n const storageString = await this.settings.userStore.get(this._userStoreKey);\n if (storageString) {\n logger2.debug(\"user storageString loaded\");\n return User.fromStorageString(storageString);\n }\n logger2.debug(\"no user storageString\");\n return null;\n }\n async storeUser(user) {\n const logger2 = this._logger.create(\"storeUser\");\n if (user) {\n logger2.debug(\"storing user\");\n const storageString = user.toStorageString();\n await this.settings.userStore.set(this._userStoreKey, storageString);\n } else {\n this._logger.debug(\"removing user\");\n await this.settings.userStore.remove(this._userStoreKey);\n if (this.settings.dpop) {\n await this.settings.dpop.store.remove(this.settings.client_id);\n }\n }\n }\n /**\n * Removes stale state entries in storage for incomplete authorize requests.\n */\n async clearStaleState() {\n await this._client.clearStaleState();\n }\n /**\n * Dynamically generates a DPoP proof for a given user, URL and optional Http method.\n * This method is useful when you need to make a request to a resource server\n * with fetch or similar, and you need to include a DPoP proof in a DPoP header.\n * @param url - The URL to generate the DPoP proof for\n * @param user - The user to generate the DPoP proof for\n * @param httpMethod - Optional, defaults to \"GET\"\n * @param nonce - Optional nonce provided by the resource server\n *\n * @returns A promise containing the DPoP proof or undefined if DPoP is not enabled/no user is found.\n */\n async dpopProof(url, user, httpMethod, nonce) {\n var _a, _b;\n const dpopState = await ((_b = (_a = this.settings.dpop) == null ? void 0 : _a.store) == null ? void 0 : _b.get(this.settings.client_id));\n if (dpopState) {\n return await CryptoUtils.generateDPoPProof({\n url,\n accessToken: user == null ? void 0 : user.access_token,\n httpMethod,\n keyPair: dpopState.keys,\n nonce\n });\n }\n return void 0;\n }\n async generateDPoPJkt(dpopSettings) {\n let dpopState = await dpopSettings.store.get(this.settings.client_id);\n if (!dpopState) {\n const dpopKeys = await CryptoUtils.generateDPoPKeys();\n dpopState = new DPoPState(dpopKeys);\n await dpopSettings.store.set(this.settings.client_id, dpopState);\n }\n return await CryptoUtils.generateDPoPJkt(dpopState.keys);\n }\n};\n\n// package.json\nvar version = \"3.4.1\";\n\n// src/Version.ts\nvar Version = version;\n\n// src/IndexedDbDPoPStore.ts\nvar IndexedDbDPoPStore = class {\n constructor() {\n this._dbName = \"oidc\";\n this._storeName = \"dpop\";\n }\n async set(key, value) {\n const store = await this.createStore(this._dbName, this._storeName);\n await store(\"readwrite\", (str) => {\n str.put(value, key);\n return this.promisifyRequest(str.transaction);\n });\n }\n async get(key) {\n const store = await this.createStore(this._dbName, this._storeName);\n return await store(\"readonly\", (str) => {\n return this.promisifyRequest(str.get(key));\n });\n }\n async remove(key) {\n const item = await this.get(key);\n const store = await this.createStore(this._dbName, this._storeName);\n await store(\"readwrite\", (str) => {\n return this.promisifyRequest(str.delete(key));\n });\n return item;\n }\n async getAllKeys() {\n const store = await this.createStore(this._dbName, this._storeName);\n return await store(\"readonly\", (str) => {\n return this.promisifyRequest(str.getAllKeys());\n });\n }\n promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n request.onabort = request.onerror = () => reject(request.error);\n });\n }\n async createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const db = await this.promisifyRequest(request);\n return async (txMode, callback) => {\n const tx = db.transaction(storeName, txMode);\n const store = tx.objectStore(storeName);\n return await callback(store);\n };\n }\n};\nexport {\n AccessTokenEvents,\n CheckSessionIFrame,\n DPoPState,\n ErrorResponse,\n ErrorTimeout,\n InMemoryWebStorage,\n IndexedDbDPoPStore,\n Log,\n Logger,\n MetadataService,\n OidcClient,\n OidcClientSettingsStore,\n SessionMonitor,\n SigninResponse,\n SigninState,\n SignoutResponse,\n State,\n User,\n UserManager,\n UserManagerSettingsStore,\n Version,\n WebStorageStateStore\n};\n//# sourceMappingURL=oidc-client-ts.js.map\n","// src/AuthContext.ts\nimport React from \"react\";\nvar AuthContext = React.createContext(void 0);\nAuthContext.displayName = \"AuthContext\";\n\n// src/AuthProvider.tsx\nimport { UserManager } from \"oidc-client-ts\";\nimport React2 from \"react\";\n\n// src/AuthState.ts\nvar initialAuthState = {\n isLoading: true,\n isAuthenticated: false\n};\n\n// src/reducer.ts\nvar reducer = (state, action) => {\n switch (action.type) {\n case \"INITIALISED\":\n case \"USER_LOADED\":\n return {\n ...state,\n user: action.user,\n isLoading: false,\n isAuthenticated: action.user ? !action.user.expired : false,\n error: void 0\n };\n case \"USER_SIGNED_OUT\":\n case \"USER_UNLOADED\":\n return {\n ...state,\n user: void 0,\n isAuthenticated: false\n };\n case \"NAVIGATOR_INIT\":\n return {\n ...state,\n isLoading: true,\n activeNavigator: action.method\n };\n case \"NAVIGATOR_CLOSE\":\n return {\n ...state,\n isLoading: false,\n activeNavigator: void 0\n };\n case \"ERROR\": {\n const error = action.error;\n error[\"toString\"] = () => `${error.name}: ${error.message}`;\n return {\n ...state,\n isLoading: false,\n error\n };\n }\n default: {\n const innerError = new TypeError(`unknown type ${action[\"type\"]}`);\n const error = {\n name: innerError.name,\n message: innerError.message,\n innerError,\n stack: innerError.stack,\n source: \"unknown\"\n };\n error[\"toString\"] = () => `${error.name}: ${error.message}`;\n return {\n ...state,\n isLoading: false,\n error\n };\n }\n }\n};\n\n// src/utils.ts\nvar hasAuthParams = (location = window.location) => {\n let searchParams = new URLSearchParams(location.search);\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) && searchParams.get(\"state\")) {\n return true;\n }\n searchParams = new URLSearchParams(location.hash.replace(\"#\", \"?\"));\n if ((searchParams.get(\"code\") || searchParams.get(\"error\")) && searchParams.get(\"state\")) {\n return true;\n }\n return false;\n};\nvar signinError = normalizeErrorFn(\"signinCallback\", \"Sign-in failed\");\nvar signoutError = normalizeErrorFn(\"signoutCallback\", \"Sign-out failed\");\nvar renewSilentError = normalizeErrorFn(\"renewSilent\", \"Renew silent failed\");\nfunction normalizeError(error, fallbackMessage) {\n return {\n name: stringFieldOf(error, \"name\", () => \"Error\"),\n message: stringFieldOf(error, \"message\", () => fallbackMessage),\n stack: stringFieldOf(error, \"stack\", () => new Error().stack),\n innerError: error\n };\n}\nfunction normalizeErrorFn(source, fallbackMessage) {\n return (error) => {\n return {\n ...normalizeError(error, fallbackMessage),\n source\n };\n };\n}\nfunction stringFieldOf(element, fieldName, or) {\n if (element && typeof element === \"object\") {\n const value = element[fieldName];\n if (typeof value === \"string\") {\n return value;\n }\n }\n return or();\n}\n\n// src/AuthProvider.tsx\nvar userManagerContextKeys = [\n \"clearStaleState\",\n \"querySessionStatus\",\n \"revokeTokens\",\n \"startSilentRenew\",\n \"stopSilentRenew\"\n];\nvar navigatorKeys = [\n \"signinPopup\",\n \"signinSilent\",\n \"signinRedirect\",\n \"signinResourceOwnerCredentials\",\n \"signoutPopup\",\n \"signoutRedirect\",\n \"signoutSilent\"\n];\nvar unsupportedEnvironment = (fnName) => () => {\n throw new Error(\n `UserManager#${fnName} was called from an unsupported context. If this is a server-rendered page, defer this call with useEffect() or pass a custom UserManager implementation.`\n );\n};\nvar UserManagerImpl = typeof window === \"undefined\" ? null : UserManager;\nvar AuthProvider = (props) => {\n const {\n children,\n onSigninCallback,\n skipSigninCallback,\n matchSignoutCallback,\n onSignoutCallback,\n onRemoveUser,\n userManager: userManagerProp = null,\n ...userManagerSettings\n } = props;\n const [userManager] = React2.useState(() => {\n return userManagerProp != null ? userManagerProp : UserManagerImpl ? new UserManagerImpl(userManagerSettings) : { settings: userManagerSettings };\n });\n const [state, dispatch] = React2.useReducer(reducer, initialAuthState);\n const userManagerContext = React2.useMemo(\n () => Object.assign(\n {\n settings: userManager.settings,\n events: userManager.events\n },\n Object.fromEntries(\n userManagerContextKeys.map((key) => {\n var _a, _b;\n return [\n key,\n (_b = (_a = userManager[key]) == null ? void 0 : _a.bind(userManager)) != null ? _b : unsupportedEnvironment(key)\n ];\n })\n ),\n Object.fromEntries(\n navigatorKeys.map((key) => [\n key,\n userManager[key] ? async (args) => {\n dispatch({\n type: \"NAVIGATOR_INIT\",\n method: key\n });\n try {\n return await userManager[key](args);\n } catch (error) {\n dispatch({\n type: \"ERROR\",\n error: {\n ...normalizeError(error, `Unknown error while executing ${key}(...).`),\n source: key,\n args\n }\n });\n return null;\n } finally {\n dispatch({ type: \"NAVIGATOR_CLOSE\" });\n }\n } : unsupportedEnvironment(key)\n ])\n )\n ),\n [userManager]\n );\n const didInitialize = React2.useRef(false);\n React2.useEffect(() => {\n if (!userManager || didInitialize.current) {\n return;\n }\n didInitialize.current = true;\n void (async () => {\n try {\n let user = null;\n if (hasAuthParams() && !skipSigninCallback) {\n user = await userManager.signinCallback();\n if (onSigninCallback) await onSigninCallback(user);\n }\n user = !user ? await userManager.getUser() : user;\n dispatch({ type: \"INITIALISED\", user });\n } catch (error) {\n dispatch({\n type: \"ERROR\",\n error: signinError(error)\n });\n }\n try {\n if (matchSignoutCallback && matchSignoutCallback(userManager.settings)) {\n const resp = await userManager.signoutCallback();\n if (onSignoutCallback) await onSignoutCallback(resp);\n }\n } catch (error) {\n dispatch({\n type: \"ERROR\",\n error: signoutError(error)\n });\n }\n })();\n }, [userManager, skipSigninCallback, onSigninCallback, onSignoutCallback, matchSignoutCallback]);\n React2.useEffect(() => {\n if (!userManager) return void 0;\n const handleUserLoaded = (user) => {\n dispatch({ type: \"USER_LOADED\", user });\n };\n userManager.events.addUserLoaded(handleUserLoaded);\n const handleUserUnloaded = () => {\n dispatch({ type: \"USER_UNLOADED\" });\n };\n userManager.events.addUserUnloaded(handleUserUnloaded);\n const handleUserSignedOut = () => {\n dispatch({ type: \"USER_SIGNED_OUT\" });\n };\n userManager.events.addUserSignedOut(handleUserSignedOut);\n const handleSilentRenewError = (error) => {\n dispatch({\n type: \"ERROR\",\n error: renewSilentError(error)\n });\n };\n userManager.events.addSilentRenewError(handleSilentRenewError);\n return () => {\n userManager.events.removeUserLoaded(handleUserLoaded);\n userManager.events.removeUserUnloaded(handleUserUnloaded);\n userManager.events.removeUserSignedOut(handleUserSignedOut);\n userManager.events.removeSilentRenewError(handleSilentRenewError);\n };\n }, [userManager]);\n const removeUser = React2.useCallback(async () => {\n if (!userManager) unsupportedEnvironment(\"removeUser\");\n await userManager.removeUser();\n if (onRemoveUser) await onRemoveUser();\n }, [userManager, onRemoveUser]);\n const contextValue = React2.useMemo(() => {\n return {\n ...state,\n ...userManagerContext,\n removeUser\n };\n }, [state, userManagerContext, removeUser]);\n return /* @__PURE__ */ React2.createElement(AuthContext.Provider, { value: contextValue }, children);\n};\n\n// src/useAuth.ts\nimport React3 from \"react\";\nvar useAuth = () => {\n const context = React3.useContext(AuthContext);\n if (!context) {\n console.warn(\"AuthProvider context is undefined, please verify you are calling useAuth() as child of a <AuthProvider> component.\");\n }\n return context;\n};\n\n// src/useAutoSignin.ts\nimport React4 from \"react\";\nvar useAutoSignin = ({ signinMethod = \"signinRedirect\" } = {}) => {\n const auth = useAuth();\n const [hasTriedSignin, setHasTriedSignin] = React4.useState(false);\n const shouldAttemptSignin = React4.useMemo(() => !hasAuthParams() && !auth.isAuthenticated && !auth.activeNavigator && !auth.isLoading && !hasTriedSignin, [auth.activeNavigator, auth.isAuthenticated, auth.isLoading, hasTriedSignin]);\n React4.useEffect(() => {\n if (shouldAttemptSignin) {\n switch (signinMethod) {\n case \"signinPopup\":\n void auth.signinPopup();\n break;\n case \"signinRedirect\":\n default:\n void auth.signinRedirect();\n break;\n }\n setHasTriedSignin(true);\n }\n }, [auth, hasTriedSignin, shouldAttemptSignin, signinMethod]);\n return {\n isLoading: auth.isLoading,\n isAuthenticated: auth.isAuthenticated,\n error: auth.error\n };\n};\n\n// src/withAuth.tsx\nimport React5 from \"react\";\nfunction withAuth(Component) {\n const displayName = `withAuth(${Component.displayName || Component.name})`;\n const C = (props) => {\n const auth = useAuth();\n return /* @__PURE__ */ React5.createElement(Component, { ...props, auth });\n };\n C.displayName = displayName;\n return C;\n}\n\n// src/withAuthenticationRequired.tsx\nimport React6 from \"react\";\nvar withAuthenticationRequired = (Component, options = {}) => {\n const { OnRedirecting = () => /* @__PURE__ */ React6.createElement(React6.Fragment, null), onBeforeSignin, signinRedirectArgs } = options;\n const displayName = `withAuthenticationRequired(${Component.displayName || Component.name})`;\n const C = (props) => {\n const auth = useAuth();\n React6.useEffect(() => {\n if (hasAuthParams() || auth.isLoading || auth.activeNavigator || auth.isAuthenticated) {\n return;\n }\n void (async () => {\n if (onBeforeSignin) await onBeforeSignin();\n await auth.signinRedirect(signinRedirectArgs);\n })();\n }, [auth.isLoading, auth.isAuthenticated, auth]);\n return auth.isAuthenticated ? /* @__PURE__ */ React6.createElement(Component, { ...props }) : OnRedirecting();\n };\n C.displayName = displayName;\n return C;\n};\nexport {\n AuthContext,\n AuthProvider,\n hasAuthParams,\n useAuth,\n useAutoSignin,\n withAuth,\n withAuthenticationRequired\n};\n//# sourceMappingURL=react-oidc-context.js.map\n","const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nconst supportsRequestInitExt = () => {\n return typeof process === \"object\" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;\n};\nfunction randomID() {\n return Math.random().toString(36).slice(2, 11);\n}\nfunction createClient(clientOptions) {\n let {\n baseUrl = \"\",\n Request: CustomRequest = globalThis.Request,\n fetch: baseFetch = globalThis.fetch,\n querySerializer: globalQuerySerializer,\n bodySerializer: globalBodySerializer,\n headers: baseHeaders,\n requestInitExt = void 0,\n ...baseOptions\n } = { ...clientOptions };\n requestInitExt = supportsRequestInitExt() ? requestInitExt : void 0;\n baseUrl = removeTrailingSlash(baseUrl);\n const globalMiddlewares = [];\n async function coreFetch(schemaPath, fetchOptions) {\n const {\n baseUrl: localBaseUrl,\n fetch = baseFetch,\n Request = CustomRequest,\n headers,\n params = {},\n parseAs = \"json\",\n querySerializer: requestQuerySerializer,\n bodySerializer = globalBodySerializer ?? defaultBodySerializer,\n body,\n middleware: requestMiddlewares = [],\n ...init\n } = fetchOptions || {};\n let finalBaseUrl = baseUrl;\n if (localBaseUrl) {\n finalBaseUrl = removeTrailingSlash(localBaseUrl) ?? baseUrl;\n }\n let querySerializer = typeof globalQuerySerializer === \"function\" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer);\n if (requestQuerySerializer) {\n querySerializer = typeof requestQuerySerializer === \"function\" ? requestQuerySerializer : createQuerySerializer({\n ...typeof globalQuerySerializer === \"object\" ? globalQuerySerializer : {},\n ...requestQuerySerializer\n });\n }\n const serializedBody = body === void 0 ? void 0 : bodySerializer(\n body,\n // Note: we declare mergeHeaders() both here and below because it’s a bit of a chicken-or-egg situation:\n // bodySerializer() needs all headers so we aren’t dropping ones set by the user, however,\n // the result of this ALSO sets the lowest-priority content-type header. So we re-merge below,\n // setting the content-type at the very beginning to be overwritten.\n // Lastly, based on the way headers work, it’s not a simple “present-or-not” check becauase null intentionally un-sets headers.\n mergeHeaders(baseHeaders, headers, params.header)\n );\n const finalHeaders = mergeHeaders(\n // with no body, we should not to set Content-Type\n serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression\n serializedBody instanceof FormData ? {} : {\n \"Content-Type\": \"application/json\"\n },\n baseHeaders,\n headers,\n params.header\n );\n const finalMiddlewares = [...globalMiddlewares, ...requestMiddlewares];\n const requestInit = {\n redirect: \"follow\",\n ...baseOptions,\n ...init,\n body: serializedBody,\n headers: finalHeaders\n };\n let id;\n let options;\n let request = new Request(\n createFinalURL(schemaPath, { baseUrl: finalBaseUrl, params, querySerializer }),\n requestInit\n );\n let response;\n for (const key in init) {\n if (!(key in request)) {\n request[key] = init[key];\n }\n }\n if (finalMiddlewares.length) {\n id = randomID();\n options = Object.freeze({\n baseUrl: finalBaseUrl,\n fetch,\n parseAs,\n querySerializer,\n bodySerializer\n });\n for (const m of finalMiddlewares) {\n if (m && typeof m === \"object\" && typeof m.onRequest === \"function\") {\n const result = await m.onRequest({\n request,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Request) {\n request = result;\n } else if (result instanceof Response) {\n response = result;\n break;\n } else {\n throw new Error(\"onRequest: must return new Request() or Response() when modifying the request\");\n }\n }\n }\n }\n }\n if (!response) {\n try {\n response = await fetch(request, requestInitExt);\n } catch (error2) {\n let errorAfterMiddleware = error2;\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onError === \"function\") {\n const result = await m.onError({\n request,\n error: errorAfterMiddleware,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (result instanceof Response) {\n errorAfterMiddleware = void 0;\n response = result;\n break;\n }\n if (result instanceof Error) {\n errorAfterMiddleware = result;\n continue;\n }\n throw new Error(\"onError: must return new Response() or instance of Error\");\n }\n }\n }\n }\n if (errorAfterMiddleware) {\n throw errorAfterMiddleware;\n }\n }\n if (finalMiddlewares.length) {\n for (let i = finalMiddlewares.length - 1; i >= 0; i--) {\n const m = finalMiddlewares[i];\n if (m && typeof m === \"object\" && typeof m.onResponse === \"function\") {\n const result = await m.onResponse({\n request,\n response,\n schemaPath,\n params,\n options,\n id\n });\n if (result) {\n if (!(result instanceof Response)) {\n throw new Error(\"onResponse: must return new Response() when modifying the response\");\n }\n response = result;\n }\n }\n }\n }\n }\n if (response.status === 204 || request.method === \"HEAD\" || response.headers.get(\"Content-Length\") === \"0\") {\n return response.ok ? { data: void 0, response } : { error: void 0, response };\n }\n if (response.ok) {\n if (parseAs === \"stream\") {\n return { data: response.body, response };\n }\n return { data: await response[parseAs](), response };\n }\n let error = await response.text();\n try {\n error = JSON.parse(error);\n } catch {\n }\n return { error, response };\n }\n return {\n request(method, url, init) {\n return coreFetch(url, { ...init, method: method.toUpperCase() });\n },\n /** Call a GET endpoint */\n GET(url, init) {\n return coreFetch(url, { ...init, method: \"GET\" });\n },\n /** Call a PUT endpoint */\n PUT(url, init) {\n return coreFetch(url, { ...init, method: \"PUT\" });\n },\n /** Call a POST endpoint */\n POST(url, init) {\n return coreFetch(url, { ...init, method: \"POST\" });\n },\n /** Call a DELETE endpoint */\n DELETE(url, init) {\n return coreFetch(url, { ...init, method: \"DELETE\" });\n },\n /** Call a OPTIONS endpoint */\n OPTIONS(url, init) {\n return coreFetch(url, { ...init, method: \"OPTIONS\" });\n },\n /** Call a HEAD endpoint */\n HEAD(url, init) {\n return coreFetch(url, { ...init, method: \"HEAD\" });\n },\n /** Call a PATCH endpoint */\n PATCH(url, init) {\n return coreFetch(url, { ...init, method: \"PATCH\" });\n },\n /** Call a TRACE endpoint */\n TRACE(url, init) {\n return coreFetch(url, { ...init, method: \"TRACE\" });\n },\n /** Register middleware */\n use(...middleware) {\n for (const m of middleware) {\n if (!m) {\n continue;\n }\n if (typeof m !== \"object\" || !(\"onRequest\" in m || \"onResponse\" in m || \"onError\" in m)) {\n throw new Error(\"Middleware must be an object with one of `onRequest()`, `onResponse() or `onError()`\");\n }\n globalMiddlewares.push(m);\n }\n },\n /** Unregister middleware */\n eject(...middleware) {\n for (const m of middleware) {\n const i = globalMiddlewares.indexOf(m);\n if (i !== -1) {\n globalMiddlewares.splice(i, 1);\n }\n }\n }\n };\n}\nclass PathCallForwarder {\n constructor(client, url) {\n this.client = client;\n this.url = url;\n }\n GET = (init) => {\n return this.client.GET(this.url, init);\n };\n PUT = (init) => {\n return this.client.PUT(this.url, init);\n };\n POST = (init) => {\n return this.client.POST(this.url, init);\n };\n DELETE = (init) => {\n return this.client.DELETE(this.url, init);\n };\n OPTIONS = (init) => {\n return this.client.OPTIONS(this.url, init);\n };\n HEAD = (init) => {\n return this.client.HEAD(this.url, init);\n };\n PATCH = (init) => {\n return this.client.PATCH(this.url, init);\n };\n TRACE = (init) => {\n return this.client.TRACE(this.url, init);\n };\n}\nclass PathClientProxyHandler {\n constructor() {\n this.client = null;\n }\n // Assume the property is an URL.\n get(coreClient, url) {\n const forwarder = new PathCallForwarder(coreClient, url);\n this.client[url] = forwarder;\n return forwarder;\n }\n}\nfunction wrapAsPathBasedClient(coreClient) {\n const handler = new PathClientProxyHandler();\n const proxy = new Proxy(coreClient, handler);\n function Client() {\n }\n Client.prototype = proxy;\n const client = new Client();\n handler.client = client;\n return client;\n}\nfunction createPathBasedClient(clientOptions) {\n return wrapAsPathBasedClient(createClient(clientOptions));\n}\nfunction serializePrimitiveParam(name, value, options) {\n if (value === void 0 || value === null) {\n return \"\";\n }\n if (typeof value === \"object\") {\n throw new Error(\n \"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\"\n );\n }\n return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`;\n}\nfunction serializeObjectParam(name, value, options) {\n if (!value || typeof value !== \"object\") {\n return \"\";\n }\n const values = [];\n const joiner = {\n simple: \",\",\n label: \".\",\n matrix: \";\"\n }[options.style] || \"&\";\n if (options.style !== \"deepObject\" && options.explode === false) {\n for (const k in value) {\n values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k]));\n }\n const final2 = values.join(\",\");\n switch (options.style) {\n case \"form\": {\n return `${name}=${final2}`;\n }\n case \"label\": {\n return `.${final2}`;\n }\n case \"matrix\": {\n return `;${name}=${final2}`;\n }\n default: {\n return final2;\n }\n }\n }\n for (const k in value) {\n const finalName = options.style === \"deepObject\" ? `${name}[${k}]` : k;\n values.push(serializePrimitiveParam(finalName, value[k], options));\n }\n const final = values.join(joiner);\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${final}` : final;\n}\nfunction serializeArrayParam(name, value, options) {\n if (!Array.isArray(value)) {\n return \"\";\n }\n if (options.explode === false) {\n const joiner2 = { form: \",\", spaceDelimited: \"%20\", pipeDelimited: \"|\" }[options.style] || \",\";\n const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2);\n switch (options.style) {\n case \"simple\": {\n return final;\n }\n case \"label\": {\n return `.${final}`;\n }\n case \"matrix\": {\n return `;${name}=${final}`;\n }\n // case \"spaceDelimited\":\n // case \"pipeDelimited\":\n default: {\n return `${name}=${final}`;\n }\n }\n }\n const joiner = { simple: \",\", label: \".\", matrix: \";\" }[options.style] || \"&\";\n const values = [];\n for (const v of value) {\n if (options.style === \"simple\" || options.style === \"label\") {\n values.push(options.allowReserved === true ? v : encodeURIComponent(v));\n } else {\n values.push(serializePrimitiveParam(name, v, options));\n }\n }\n return options.style === \"label\" || options.style === \"matrix\" ? `${joiner}${values.join(joiner)}` : values.join(joiner);\n}\nfunction createQuerySerializer(options) {\n return function querySerializer(queryParams) {\n const search = [];\n if (queryParams && typeof queryParams === \"object\") {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === void 0 || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n continue;\n }\n search.push(\n serializeArrayParam(name, value, {\n style: \"form\",\n explode: true,\n ...options?.array,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n if (typeof value === \"object\") {\n search.push(\n serializeObjectParam(name, value, {\n style: \"deepObject\",\n explode: true,\n ...options?.object,\n allowReserved: options?.allowReserved || false\n })\n );\n continue;\n }\n search.push(serializePrimitiveParam(name, value, options));\n }\n }\n return search.join(\"&\");\n };\n}\nfunction defaultPathSerializer(pathname, pathParams) {\n let nextURL = pathname;\n for (const match of pathname.match(PATH_PARAM_RE) ?? []) {\n let name = match.substring(1, match.length - 1);\n let explode = false;\n let style = \"simple\";\n if (name.endsWith(\"*\")) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith(\".\")) {\n style = \"label\";\n name = name.substring(1);\n } else if (name.startsWith(\";\")) {\n style = \"matrix\";\n name = name.substring(1);\n }\n if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) {\n continue;\n }\n const value = pathParams[name];\n if (Array.isArray(value)) {\n nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode }));\n continue;\n }\n if (typeof value === \"object\") {\n nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode }));\n continue;\n }\n if (style === \"matrix\") {\n nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`);\n continue;\n }\n nextURL = nextURL.replace(match, style === \"label\" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value));\n }\n return nextURL;\n}\nfunction defaultBodySerializer(body, headers) {\n if (body instanceof FormData) {\n return body;\n }\n if (headers) {\n const contentType = headers.get instanceof Function ? headers.get(\"Content-Type\") ?? headers.get(\"content-type\") : headers[\"Content-Type\"] ?? headers[\"content-type\"];\n if (contentType === \"application/x-www-form-urlencoded\") {\n return new URLSearchParams(body).toString();\n }\n }\n return JSON.stringify(body);\n}\nfunction createFinalURL(pathname, options) {\n let finalURL = `${options.baseUrl}${pathname}`;\n if (options.params?.path) {\n finalURL = defaultPathSerializer(finalURL, options.params.path);\n }\n let search = options.querySerializer(options.params.query ?? {});\n if (search.startsWith(\"?\")) {\n search = search.substring(1);\n }\n if (search) {\n finalURL += `?${search}`;\n }\n return finalURL;\n}\nfunction mergeHeaders(...allHeaders) {\n const finalHeaders = new Headers();\n for (const h of allHeaders) {\n if (!h || typeof h !== \"object\") {\n continue;\n }\n const iterator = h instanceof Headers ? h.entries() : Object.entries(h);\n for (const [k, v] of iterator) {\n if (v === null) {\n finalHeaders.delete(k);\n } else if (Array.isArray(v)) {\n for (const v2 of v) {\n finalHeaders.append(k, v2);\n }\n } else if (v !== void 0) {\n finalHeaders.set(k, v);\n }\n }\n }\n return finalHeaders;\n}\nfunction removeTrailingSlash(url) {\n if (url.endsWith(\"/\")) {\n return url.substring(0, url.length - 1);\n }\n return url;\n}\n\nexport { createFinalURL, createPathBasedClient, createQuerySerializer, createClient as default, defaultBodySerializer, defaultPathSerializer, mergeHeaders, randomID, removeTrailingSlash, serializeArrayParam, serializeObjectParam, serializePrimitiveParam, wrapAsPathBasedClient };\n//# sourceMappingURL=index.mjs.map\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateUserBody = {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n phone?: string;\n document?: number;\n gender?: 'male' | 'female' | 'other';\n birthdate?: string;\n};\n\ntype UpdateUserDto = components['schemas']['UpdateUserDto'];\n\ntype GetUsersParams = {\n email?: string;\n document?: number;\n only_students?: boolean;\n institution_id?: string;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createUserService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get current authenticated user\n */\n getMe() {\n return apiClient.GET('/users/me');\n },\n\n /**\n * List all users with optional filters\n */\n getUsers(params?: GetUsersParams) {\n return apiClient.GET('/users', {\n params: { query: params },\n });\n },\n\n /**\n * Get user by ID\n */\n getUserById(id: string) {\n return apiClient.GET('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new user\n */\n createUser(body: CreateUserBody) {\n return apiClient.POST('/users', {\n body,\n });\n },\n\n /**\n * Update user information\n */\n updateUser(id: string, body: UpdateUserDto) {\n return apiClient.PATCH('/users/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete user\n */\n deleteUser(id: string) {\n return apiClient.DELETE('/users/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's groups\n */\n getUserGroups(id: string) {\n return apiClient.GET('/users/{id}/groups', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's certificates\n */\n getUserCertificates(id: string) {\n return apiClient.GET('/users/{id}/certificates', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get user's institutions\n */\n getUserInstitutions(id: string) {\n return apiClient.GET('/users/{id}/institutions', {\n params: { path: { id } },\n });\n },\n\n /**\n * Sync user with Keycloak\n */\n syncUser(id: string) {\n return apiClient.POST('/users/{id}/sync', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type UserService = ReturnType<typeof createUserService>;\n","import type { AcademeApiClient } from './index';\nimport type { components, paths } from '../types/academe-api';\n\ntype CreateInstitutionGroupDto = components['schemas']['CreateInstitutionGroupDto'];\ntype UpdateInstitutionGroupDto = components['schemas']['UpdateInstitutionGroupDto'];\ntype CreateInstitutionClassroomDto = components['schemas']['CreateInstitutionClassroomDto'];\ntype UpdateInstitutionClassroomDto = components['schemas']['UpdateInstitutionClassroomDto'];\ntype CreateInstitutionRegistrationDto = components['schemas']['CreateInstitutionRegistrationDto'];\ntype UpdateInstitutionRegistrationDto = components['schemas']['UpdateInstitutionRegistrationDto'];\ntype AssignClassroomDto = components['schemas']['AssignClassroomDto'];\n\n// Extract query parameters type directly from API path definition\ntype GetInstitutionUsersQuery = paths['/institutions/{institutionId}/users']['get']['parameters']['query'];\n\nexport function createInstitutionService(apiClient: AcademeApiClient) {\n return {\n getAll() {\n return apiClient.GET('/institutions');\n },\n getById(id: string) {\n return apiClient.GET('/institutions/{id}', { params: { path: { id } } });\n },\n\n // Institution Groups\n getGroups(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n });\n },\n addGroup(institutionId: string, data: CreateInstitutionGroupDto) {\n return apiClient.POST('/institutions/{institutionId}/groups', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n removeGroup(institutionId: string, groupId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n });\n },\n updateGroup(institutionId: string, groupId: string, data: UpdateInstitutionGroupDto) {\n return apiClient.PATCH('/institutions/{institutionId}/groups/{groupId}', {\n params: { path: { institutionId, groupId } },\n body: data,\n });\n },\n // Institution Classrooms\n getClassrooms(institutionId: string, options?: { includeUserCount?: boolean }) {\n return apiClient.GET('/institutions/{institutionId}/classrooms', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n getClassroomById(institutionId: string, classroomId: string) {\n return apiClient.GET('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n addClassroom(institutionId: string, data: CreateInstitutionClassroomDto) {\n return apiClient.POST('/institutions/{institutionId}/classrooms', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateClassroom(institutionId: string, classroomId: string, data: UpdateInstitutionClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n body: data,\n });\n },\n removeClassroom(institutionId: string, classroomId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/classrooms/{classroomId}', {\n params: { path: { institutionId, classroomId } },\n });\n },\n\n // Institution Users (list all users with filters)\n getUsers(\n institutionId: string,\n options?: GetInstitutionUsersQuery\n ) {\n return apiClient.GET('/institutions/{institutionId}/users', {\n params: {\n path: { institutionId },\n query: options,\n },\n });\n },\n\n // Institution Registrations (Users in Institution)\n getRegistrations(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n });\n },\n getRegistrationById(institutionId: string, registrationId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getRegistrationByUserId(institutionId: string, userId: string) {\n return apiClient.GET('/institutions/{institutionId}/registrations/user/{userId}', {\n params: { path: { institutionId, userId } },\n });\n },\n registerUser(institutionId: string, data: CreateInstitutionRegistrationDto) {\n return apiClient.POST('/institutions/{institutionId}/registrations', {\n params: { path: { institutionId } },\n body: data,\n });\n },\n updateRegistration(institutionId: string, registrationId: string, data: UpdateInstitutionRegistrationDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n assignUserToClassroom(institutionId: string, registrationId: string, data: AssignClassroomDto) {\n return apiClient.PATCH('/institutions/{institutionId}/registrations/{registrationId}/classroom', {\n params: { path: { institutionId, registrationId } },\n body: data,\n });\n },\n removeRegistration(institutionId: string, registrationId: string) {\n return apiClient.DELETE('/institutions/{institutionId}/registrations/{registrationId}', {\n params: { path: { institutionId, registrationId } },\n });\n },\n getGroupUsers(institutionId: string) {\n return apiClient.GET('/institutions/{institutionId}/groups/users', {\n params: { path: { institutionId } },\n });\n },\n };\n}\n\nexport type InstitutionService = ReturnType<typeof createInstitutionService>;\n","import type { AcademeApiClient } from './index';\n\ntype GetDashboardParams = {\n institutionId?: string;\n};\n\ntype GetRecentActivitiesParams = {\n period?: '7days' | '30days' | 'all';\n};\n\ntype GetTopStudentsParams = {\n filterType: 'nota' | 'engajamento' | 'conclusao';\n year?: number;\n};\n\nexport function createReportService(apiClient: AcademeApiClient) {\n return {\n /**\n * Get dashboard data (global)\n * Returns aggregated dashboard data for all institutions (requires admin permission)\n */\n getDashboard(params?: GetDashboardParams) {\n return apiClient.GET('/reports/dashboard', {\n params: { query: params },\n });\n },\n\n /**\n * Get dashboard data for specific institution\n * Returns aggregated dashboard data for a specific institution\n */\n getDashboardByInstitution(id: string) {\n return apiClient.GET('/reports/dashboard/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get courses distribution by area (global)\n * Returns distribution of course completions by area/category\n */\n getCoursesByArea() {\n return apiClient.GET('/reports/courses-by-area');\n },\n\n /**\n * Get courses distribution by area for specific institution\n * Returns distribution of course completions by area/category for an institution\n */\n getCoursesByAreaByInstitution(id: string) {\n return apiClient.GET('/reports/courses-by-area/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get adhesion rate (global)\n * Returns adhesion rate (unique students who accessed) per month for the last 6 months\n */\n getAdhesionRate() {\n return apiClient.GET('/reports/adhesion-rate');\n },\n\n /**\n * Get adhesion rate for specific institution\n * Returns adhesion rate for an institution for the last 6 months\n */\n getAdhesionRateByInstitution(id: string) {\n return apiClient.GET('/reports/adhesion-rate/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get recent activities (global)\n * Returns recent student activities (certificates issued and courses started)\n */\n getRecentActivities(params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities', {\n params: { query: params },\n });\n },\n\n /**\n * Get recent activities for specific institution\n * Returns recent student activities for an institution\n */\n getRecentActivitiesByInstitution(id: string, params?: GetRecentActivitiesParams) {\n return apiClient.GET('/reports/recent-activities/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n\n /**\n * Get top students (global)\n * Returns top 10 students based on selected filter\n */\n getTopStudents(params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students', {\n params: { query: params },\n });\n },\n\n /**\n * Get top students for specific institution\n * Returns top 10 students for an institution based on selected filter\n */\n getTopStudentsByInstitution(id: string, params: GetTopStudentsParams) {\n return apiClient.GET('/reports/top-students/{id}', {\n params: {\n path: { id },\n query: params,\n },\n });\n },\n };\n}\n\nexport type ReportService = ReturnType<typeof createReportService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateClassroomDto = components['schemas']['CreateClassroomDto'];\ntype UpdateClassroomDto = components['schemas']['UpdateClassroomDto'];\n\ntype GetClassroomsByInstitutionParams = {\n page?: number;\n limit?: number;\n search?: string;\n};\n\nexport function createClassroomService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all classrooms\n */\n getAll() {\n return apiClient.GET('/classrooms');\n },\n\n /**\n * Get classroom by ID\n */\n getById(id: string) {\n return apiClient.GET('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Get classrooms by institution ID\n */\n getByInstitution(institutionId: string, params?: GetClassroomsByInstitutionParams) {\n return apiClient.GET('/classrooms/institution/{id}', {\n params: {\n path: { id: institutionId },\n query: params,\n },\n });\n },\n\n /**\n * Create a new classroom\n */\n create(data: CreateClassroomDto) {\n return apiClient.POST('/classrooms', {\n body: data,\n });\n },\n\n /**\n * Update classroom\n */\n update(id: string, data: UpdateClassroomDto) {\n return apiClient.PATCH('/classrooms/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete classroom\n */\n delete(id: string) {\n return apiClient.DELETE('/classrooms/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ClassroomService = ReturnType<typeof createClassroomService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateOrganizationDto = components['schemas']['CreateOrganizationDto'];\ntype UpdateOrganizationDto = components['schemas']['UpdateOrganizationDto'];\n\ntype GetOrganizationsParams = {\n name?: string;\n type?: string;\n isActive?: boolean;\n search?: string;\n page?: number;\n limit?: number;\n};\n\nexport function createOrganizationService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all organizations with optional filters\n */\n getAll(params?: GetOrganizationsParams) {\n return apiClient.GET('/organizations', {\n params: { query: params },\n });\n },\n\n /**\n * Get organization by ID\n */\n getById(id: string) {\n return apiClient.GET('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new organization\n */\n create(body: CreateOrganizationDto) {\n return apiClient.POST('/organizations', {\n body,\n });\n },\n\n /**\n * Update organization information\n */\n update(id: string, body: UpdateOrganizationDto) {\n return apiClient.PATCH('/organizations/{id}', {\n params: { path: { id } },\n body,\n });\n },\n\n /**\n * Delete organization\n * Note: Cannot delete organizations with children\n */\n delete(id: string) {\n return apiClient.DELETE('/organizations/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type OrganizationService = ReturnType<typeof createOrganizationService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateSerieDto = components['schemas']['CreateSerieDto'];\ntype UpdateSerieDto = components['schemas']['UpdateSerieDto'];\n\nexport function createSerieService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all series\n */\n getAll() {\n return apiClient.GET('/series');\n },\n\n /**\n * Get serie by ID\n */\n getById(id: string) {\n return apiClient.GET('/series/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new serie\n */\n create(data: CreateSerieDto) {\n return apiClient.POST('/series', {\n body: data,\n });\n },\n\n /**\n * Update serie\n */\n update(id: string, data: UpdateSerieDto) {\n return apiClient.PATCH('/series/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete serie\n */\n delete(id: string) {\n return apiClient.DELETE('/series/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type SerieService = ReturnType<typeof createSerieService>;\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateShiftDto = components['schemas']['CreateShiftDto'];\ntype UpdateShiftDto = components['schemas']['UpdateShiftDto'];\n\nexport function createShiftService(apiClient: AcademeApiClient) {\n return {\n /**\n * List all shifts\n */\n getAll() {\n return apiClient.GET('/shifts');\n },\n\n /**\n * Get shift by ID\n */\n getById(id: string) {\n return apiClient.GET('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n\n /**\n * Create a new shift\n */\n create(data: CreateShiftDto) {\n return apiClient.POST('/shifts', {\n body: data,\n });\n },\n\n /**\n * Update shift\n */\n update(id: string, data: UpdateShiftDto) {\n return apiClient.PATCH('/shifts/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n /**\n * Delete shift\n */\n delete(id: string) {\n return apiClient.DELETE('/shifts/{id}', {\n params: { path: { id } },\n });\n },\n };\n}\n\nexport type ShiftService = ReturnType<typeof createShiftService>;\n\n\n\n\n","import type { AcademeApiClient } from './index';\nimport type { components } from '../types/academe-api';\n\ntype CreateGuardianDto = components['schemas']['CreateGuardianDto'];\ntype UpdateGuardianDto = components['schemas']['UpdateGuardianDto'];\ntype AssignGuardianToUserDto = components['schemas']['AssignGuardianToUserDto'];\n\nexport function createGuardianService(apiClient: AcademeApiClient) {\n return {\n // List all guardians\n getAll() {\n return apiClient.GET('/guardians');\n },\n\n // Get guardian by ID\n getById(id: string) {\n return apiClient.GET('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Create a new guardian\n create(data: CreateGuardianDto) {\n return apiClient.POST('/guardians', {\n body: data,\n });\n },\n\n // Update guardian\n update(id: string, data: UpdateGuardianDto) {\n return apiClient.PATCH('/guardians/{id}', {\n params: { path: { id } },\n body: data,\n });\n },\n\n // Delete guardian\n delete(id: string) {\n return apiClient.DELETE('/guardians/{id}', {\n params: { path: { id } },\n });\n },\n\n // Get guardian's users (students)\n getUsers(id: string) {\n return apiClient.GET('/guardians/{id}/users', {\n params: { path: { id } },\n });\n },\n\n // Assign guardian to user\n assignToUser(data: AssignGuardianToUserDto) {\n return apiClient.POST('/guardians/assign', {\n body: data,\n });\n },\n\n // Remove guardian from user\n removeFromUser(guardianId: string, userId: string) {\n return apiClient.DELETE('/guardians/{guardianId}/users/{userId}', {\n params: { path: { guardianId, userId } },\n });\n },\n };\n}\n\nexport type GuardianService = ReturnType<typeof createGuardianService>;\n\n","import type { paths } from '../types/academe-api';\nimport createClient from 'openapi-fetch';\nimport { createUserService, type UserService } from './UserService';\nimport { createInstitutionService, type InstitutionService } from './InstitutionService';\nimport { createReportService, type ReportService } from './ReportService';\nimport { createClassroomService, type ClassroomService } from './ClassroomService';\nimport { createOrganizationService, type OrganizationService } from './OrganizationService';\nimport { createSerieService, type SerieService } from './SerieService';\nimport { createShiftService, type ShiftService } from './ShiftService';\nimport { createGuardianService, type GuardianService } from './GuardianService';\n\nexport type AcademeApiClient = ReturnType<typeof createClient<paths>>;\n\nexport function createAcademeApiClient(baseUrl: string): AcademeApiClient {\n return createClient<paths>({ baseUrl });\n}\n\nexport interface AcademeServices {\n user: UserService;\n institution: InstitutionService;\n report: ReportService;\n classroom: ClassroomService;\n organization: OrganizationService;\n serie: SerieService;\n shift: ShiftService;\n guardian: GuardianService;\n}\n\nexport function createAcademeServices(apiClient: AcademeApiClient): AcademeServices {\n return {\n user: createUserService(apiClient),\n institution: createInstitutionService(apiClient),\n report: createReportService(apiClient),\n classroom: createClassroomService(apiClient),\n organization: createOrganizationService(apiClient),\n serie: createSerieService(apiClient),\n shift: createShiftService(apiClient),\n guardian: createGuardianService(apiClient),\n };\n}\n\nexport { createUserService, type UserService } from './UserService';\nexport { createReportService, type ReportService } from './ReportService';\nexport { createClassroomService, type ClassroomService } from './ClassroomService';\nexport { createOrganizationService, type OrganizationService } from './OrganizationService';\nexport { createSerieService, type SerieService } from './SerieService';\nexport { createShiftService, type ShiftService } from './ShiftService';\nexport { createGuardianService, type GuardianService } from './GuardianService';","export enum GLOBAL_ROLES {\n ADMIN_ACADEME = \"admin_academe\",\n SCHOOL_ADMIN = \"school_admin\",\n TEACHER = \"teacher\",\n STUDENT = \"student\",\n GUARDIAN = \"guardian\",\n}","import React, {\n createContext,\n useContext,\n useEffect,\n useState,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { AuthProvider, useAuth, AuthProviderProps } from \"react-oidc-context\";\nimport {\n createAcademeApiClient,\n createAcademeServices,\n type AcademeApiClient,\n type AcademeServices,\n} from \"../../services\";\nimport {\n SecurityContextType,\n SecurityProviderProps,\n AcademeKeycloakContextProps,\n AcademeUser,\n KeycloakUser,\n} from \"./types\";\nimport { GLOBAL_ROLES } from \"../../roles/global\";\nimport { jwtDecode } from \"jwt-decode\";\n\ninterface KeycloakProfile {\n realm_access?: {\n roles: string[];\n };\n resource_access?: {\n [key: string]: {\n roles: string[];\n };\n };\n email?: string;\n given_name?: string;\n family_name?: string;\n sub?: string;\n [key: string]: any;\n}\n\nexport const AcademeAuthProvider: React.FC<AcademeKeycloakContextProps> = ({\n realm,\n hubUrl,\n children,\n clientId,\n keycloakUrl,\n apiBaseUrl,\n initOptions,\n skipApiUserFetch,\n}) => {\n const oidcConfig: AuthProviderProps = {\n authority: `${keycloakUrl}/realms/${realm}`,\n client_id: clientId,\n redirect_uri:\n typeof window !== \"undefined\"\n ? window.location.origin\n : process.env.NEXT_PUBLIC_REDIRECT_URI,\n scope: \"openid profile email\",\n onSigninCallback: () => {\n window.history.replaceState({}, document.title, window.location.pathname);\n },\n automaticSilentRenew: true,\n };\n\n return (\n <AuthProvider {...oidcConfig}>\n <SecurityProvider\n hubUrl={hubUrl}\n apiBaseUrl={apiBaseUrl}\n skipApiUserFetch={skipApiUserFetch}\n >\n {children}\n </SecurityProvider>\n </AuthProvider>\n );\n};\n\nconst SecurityContext = createContext<SecurityContextType>({\n isInitialized: false,\n user: null,\n refreshUserData: async () => {},\n signOut: () => null,\n goToLogin: () => Promise.resolve(),\n hasSchool: () => false,\n hasRealmRole: () => false,\n hasClientRole: () => false,\n isAuthenticated: () => false,\n apiClient: null,\n services: null,\n accessToken: undefined,\n});\n\n// Função pura fora do componente - sem re-criação\nconst decodeAccessToken = (\n token: string | undefined\n): KeycloakProfile | null => {\n if (!token) return null;\n try {\n return jwtDecode<KeycloakProfile>(token);\n } catch (error) {\n console.error(\"Erro ao decodificar access_token:\", error);\n return null;\n }\n};\n\nconst SecurityProvider: React.FC<SecurityProviderProps> = ({\n apiBaseUrl = \"https://stg-api.academe.com.br\",\n skipApiUserFetch = false,\n children,\n}) => {\n const auth = useAuth();\n const [currentUser, setCurrentUser] = useState<AcademeUser | null>(null);\n const hasTriedSignInSilent = useRef(false);\n\n // Extrair valores primitivos do auth para usar como dependências estáveis\n const isAuthenticated = auth.isAuthenticated;\n const isLoading = auth.isLoading;\n const activeNavigator = auth.activeNavigator;\n const accessToken = auth.user?.access_token;\n const userProfile = auth.user?.profile;\n const userProfileSub = auth.user?.profile?.sub;\n\n // --- 1. Silent Check Inicial (Check SSO) ---\n useEffect(() => {\n if (\n !isAuthenticated &&\n !isLoading &&\n !activeNavigator &&\n !hasTriedSignInSilent.current\n ) {\n hasTriedSignInSilent.current = true;\n auth.signinSilent().catch((err: any) => {\n console.debug(\"Silent Check SSO: Usuário não logado ou erro:\", err);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAuthenticated, isLoading, activeNavigator]);\n\n // --- 2. Configuração de API e Services ---\n const apiClient = useMemo<AcademeApiClient>(() => {\n return createAcademeApiClient(apiBaseUrl);\n }, [apiBaseUrl]);\n\n const services = useMemo<AcademeServices>(() => {\n return createAcademeServices(apiClient);\n }, [apiClient]);\n\n const decodedAccessToken = useMemo(() => {\n return accessToken ? decodeAccessToken(accessToken) : null;\n }, [accessToken]);\n\n // Injeção do Token na API\n useEffect(() => {\n if (accessToken) {\n apiClient.use({\n onRequest({ request }) {\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return request;\n },\n });\n if (typeof window !== \"undefined\") {\n window.accessToken = accessToken;\n }\n } else {\n if (typeof window !== \"undefined\") {\n window.accessToken = undefined;\n }\n }\n }, [accessToken, apiClient]);\n\n // --- 3. Helpers de Usuário e Roles ---\n\n const getKeycloakUser = useCallback((): KeycloakUser => {\n const profile = userProfile as KeycloakProfile;\n return {\n email: profile?.email || \"\",\n name: profile?.given_name || \"\",\n lastName: profile?.family_name || \"\",\n };\n }, [userProfile]);\n\n const hasRealmRole = useCallback(\n (role: string): boolean => {\n return decodedAccessToken?.realm_access?.roles?.includes(role) ?? false;\n },\n [decodedAccessToken]\n );\n\n const hasClientRole = useCallback(\n (role: string, clientId?: string): boolean => {\n if (!decodedAccessToken) return false;\n if (!decodedAccessToken?.resource_access) return false;\n\n if (clientId) {\n return (\n decodedAccessToken.resource_access[clientId]?.roles?.includes(role) ??\n false\n );\n }\n\n return Object.values(decodedAccessToken.resource_access).some(\n (resource) => resource.roles?.includes(role)\n );\n },\n [decodedAccessToken]\n );\n\n // --- 4. Fetch de Dados do Usuário (Backend) ---\n useEffect(() => {\n let isMounted = true;\n\n const fetchUserData = async () => {\n if (isAuthenticated) {\n if (skipApiUserFetch) {\n if (isMounted) {\n const academeUser: AcademeUser = {\n keycloakUser: getKeycloakUser(),\n } as AcademeUser;\n setCurrentUser({ ...academeUser, id: userProfileSub });\n }\n return;\n }\n\n try {\n const response = await services.user.getMe();\n if (isMounted && response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n }\n } else if (!isAuthenticated && !isLoading) {\n if (isMounted) {\n setCurrentUser(null);\n }\n }\n };\n\n fetchUserData();\n\n return () => {\n isMounted = false;\n };\n }, [\n isAuthenticated,\n isLoading,\n getKeycloakUser,\n services,\n skipApiUserFetch,\n userProfileSub,\n ]);\n\n const refreshUserData = useCallback(async () => {\n if (isAuthenticated) {\n if (skipApiUserFetch) {\n const academeUser: AcademeUser = {\n keycloakUser: getKeycloakUser(),\n } as AcademeUser;\n setCurrentUser(academeUser);\n return;\n }\n\n try {\n const response = await services.user.getMe();\n if (response?.data?.data) {\n const academeUser: AcademeUser = {\n ...response.data.data,\n keycloakUser: getKeycloakUser(),\n };\n setCurrentUser(academeUser);\n }\n } catch (error) {\n console.error(\"Error refreshing user data:\", error);\n }\n }\n }, [isAuthenticated, getKeycloakUser, services, skipApiUserFetch]);\n\n // --- 5. Ações de Auth ---\n\n const signOut = useCallback(() => {\n console.log(\"[KC LOGOUT!]\");\n setCurrentUser(null);\n auth.removeUser();\n auth.signoutRedirect({\n id_token_hint: auth.user?.id_token,\n });\n auth.clearStaleState();\n }, [auth]);\n\n const hasSchool = useCallback(\n (schoolId: string) => {\n if (hasRealmRole(GLOBAL_ROLES.ADMIN_ACADEME)) {\n return true;\n }\n\n return (\n currentUser?.institutionRegistrations?.some(\n (registration) => registration.institutionId === schoolId\n ) ?? false\n );\n },\n [hasRealmRole, currentUser?.institutionRegistrations]\n );\n\n const goToLogin = useCallback(() => {\n return auth.signinRedirect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Memoizar o value do context para evitar re-renders desnecessários\n const contextValue = useMemo<SecurityContextType>(\n () => ({\n isInitialized: !isLoading,\n user: currentUser,\n refreshUserData,\n signOut,\n isAuthenticated: () => isAuthenticated,\n hasSchool,\n goToLogin,\n hasRealmRole,\n hasClientRole,\n accessToken,\n apiClient,\n services,\n }),\n [\n isLoading,\n currentUser,\n refreshUserData,\n signOut,\n isAuthenticated,\n hasSchool,\n goToLogin,\n hasRealmRole,\n hasClientRole,\n accessToken,\n apiClient,\n services,\n ]\n );\n\n return (\n <SecurityContext.Provider value={contextValue}>\n {children}\n </SecurityContext.Provider>\n );\n};\n\ndeclare global {\n interface Window {\n accessToken?: string;\n }\n}\n\nexport const useAcademeAuth = () => useContext(SecurityContext);\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Loader2Icon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-10 animate-spin text-violet-500\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\nimport { Spinner } from \"../ui/spinner\";\n\ntype ProtectedAppProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedApp: React.FC<ProtectedAppProps> = ({\n children,\n requiredClientRoles,\n requiredRealmRoles,\n}) => {\n const {\n isInitialized,\n goToLogin,\n hasClientRole,\n hasRealmRole,\n isAuthenticated,\n } = useAcademeAuth();\n\n if (!isInitialized) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <Spinner className=\"size-10 text-violet-500\" />\n </div>\n );\n }\n\n if (!isAuthenticated()) {\n goToLogin();\n return <></>;\n }\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <h1 className=\"text-2xl font-bold\">\n Você não tem permissão para acessar esta página\n </h1>\n <span>\n Se você acredita que isso é um erro, entre em contato com o suporte.\n </span>\n </div>\n );\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedComponent: React.FC<ProtectedRouterProps> = ({\n children,\n requiredRealmRoles,\n requiredClientRoles,\n}) => {\n const { hasClientRole, hasRealmRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedRouter: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n unauthorizedMessage,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <h1>{unauthorizedMessage || \"unauthorized\"}</h1>;\n }\n\n return children;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export enum BACKOFFICE_ROLES {\n}","export enum DASHBOARD_ROLES {\n}","export enum APPLICATIONS_ROLES {\n ACCESS_NINA = \"Acesso nina\",\n ACCESS_MIKE = \"Acesso mike\",\n VIEW_WIDGET = \"Visualizar Widget\",\n}\n\nexport enum MIKE_ROLES {\n ACCESS_ROLEPLAY = \"Acesso roleplay\",\n ACCESS_JOURNEYS = \"Acesso jornadas\",\n ACCESS_FREEPLAY = \"Acesso freeplay\",\n}\n","/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/applications\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get all applications */\n get: {\n parameters: {\n query?: {\n /** @description Search applications by name */\n search?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of applications */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"][];\n };\n };\n };\n };\n put?: never;\n /** Create a new application */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** Sync applications with Keycloak */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Sync completed successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n message?: string;\n synced?: number;\n errors?: number;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/applications/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** Get an application by ID */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application found */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n /** Delete an application */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Application deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n options?: never;\n head?: never;\n /** Update an application */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Application ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateApplicationDto\"];\n };\n };\n responses: {\n /** @description Application updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Application\"];\n };\n };\n /** @description Application not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n trace?: never;\n };\n \"/auth/token\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Generate TheMembers JWT token for authenticated user\n * @description Generates a signed JWT token for TheMembers platform authentication.\n * This endpoint requires the user to be already authenticated with Keycloak.\n *\n * **Authentication Flow:**\n * 1. User must first authenticate with Keycloak\n * 2. Client sends request with Keycloak Bearer token in Authorization header\n * 3. Endpoint validates the token and extracts user information\n * 4. Endpoint returns TheMembers JWT token signed with RSA private key\n *\n * **Token Details:**\n * - Algorithm: RS256 (RSA with SHA-256)\n * - Payload includes user email and organization ID\n * - Token can be used for TheMembers platform authentication\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /**\n * @description JWT token signed with RS256 algorithm for TheMembers\n * @example eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\n */\n token?: string;\n /** @description User information from Keycloak */\n user?: {\n /** @example user@example.com */\n email?: string;\n /** @example John Doe */\n name?: string;\n /**\n * @description Keycloak user subject identifier\n * @example f6c4a7e9-8b3d-4f2e-9c1a-5d8e7f2a1b3c\n */\n sub?: string;\n };\n };\n };\n };\n };\n /** @description Bad Request - Token generation failed */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Token generation failed */\n message?: string;\n };\n };\n };\n /** @description Unauthorized - User not authenticated or invalid Keycloak token */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example User not authenticated */\n message?: string;\n };\n };\n };\n /** @description Internal Server Error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example error */\n status?: string;\n /** @example Failed to generate authentication token */\n message?: string;\n };\n };\n };\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all categories\n * @description Retrieve a list of all course categories\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of categories */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new category\n * @description Create a new course category\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/categories/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get category by ID\n * @description Retrieve detailed information about a specific category\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete category\n * @description Remove a category from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Category deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Category deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update category\n * @description Update category information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCategoryDto\"];\n };\n };\n responses: {\n /** @description Category updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Category\"];\n /** @example Category updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all certificates\n * @description Retrieve a list of all certificates in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new certificate\n * @description Issue a new certificate for a user\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/certificates/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get certificate by ID\n * @description Retrieve detailed information about a specific certificate\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete certificate\n * @description Remove a certificate from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Certificate deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Certificate deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update certificate\n * @description Update certificate information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCertificateDto\"];\n };\n };\n responses: {\n /** @description Certificate updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"];\n /** @example Certificate updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms\n * @description Retrieve a list of all classrooms\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new classroom\n * @description Create a new classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/institution/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classrooms by institution ID\n * @description Retrieve all active classrooms associated with a specific institution\n */\n get: {\n parameters: {\n query?: {\n /** @description Page number */\n page?: number;\n /** @description Number of items per page */\n limit?: number;\n /** @description Search by classroom name */\n search?: string;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of classrooms for the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/classrooms/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get classroom by ID\n * @description Retrieve detailed information about a specific classroom\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete classroom\n * @description Remove a classroom from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Classroom deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update classroom\n * @description Update classroom information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Classroom\"];\n /** @example Classroom updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all courses\n * @description Retrieve a list of all courses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of courses */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new course\n * @description Create a new course in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateCourseDto\"];\n };\n };\n responses: {\n /** @description Course created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course by ID\n * @description Retrieve detailed information about a specific course\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course\n * @description Remove a course from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course\n * @description Update course information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateCourseDto\"];\n };\n };\n responses: {\n /** @description Course updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Course\"];\n /** @example Course updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module\n * @description Create a new module for a course\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseId: string;\n /** @example Introduction to Programming */\n title: string;\n description?: string;\n /** @example 1 */\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module by ID\n * @description Retrieve detailed information about a specific course module\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module\n * @description Remove a module from a course\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module\n * @description Update course module information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n description?: string;\n order?: number;\n };\n };\n };\n responses: {\n /** @description Course module updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/courses/modules/lessons\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Create course module lesson\n * @description Create a new lesson for a course module\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n courseModuleId: string;\n /** @example Variables and Data Types */\n title: string;\n content?: string;\n /** @example 1 */\n order?: number;\n /** @example 30 */\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/courses/modules/lessons/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get course module lesson by ID\n * @description Retrieve detailed information about a specific lesson\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete course module lesson\n * @description Remove a lesson from a course module\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Course module lesson deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update course module lesson\n * @description Update lesson information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n title?: string;\n content?: string;\n order?: number;\n duration?: number;\n };\n };\n };\n responses: {\n /** @description Course module lesson updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Course module lesson updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups\n * @description Retrieve a list of all groups in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new group\n * @description Create a new group in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group (e.g., student, teacher, admin) */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Group already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group by ID\n * @description Retrieve detailed information about a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete group\n * @description Remove a group from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group\n * @description Update group information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @description Name of the group */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n };\n };\n responses: {\n /** @description Group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"];\n /** @example Group updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/groups/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group users\n * @description Retrieve all users that belong to a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{id}/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get group roles\n * @description Retrieve all roles associated with a specific group\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of group roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign user to group\n * @description Add a user to a specific group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignUserToGroupDto\"];\n };\n };\n responses: {\n /** @description User assigned to group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User assigned to group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/{groupId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove user from group\n * @description Remove a user from a specific group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Group ID */\n groupId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User removed from group successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User removed from group successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign role to group\n * @description Assign an existing role to a group\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /**\n * Format: uuid\n * @description ID of the group to assign the role to\n */\n groupId: string;\n /**\n * Format: uuid\n * @description ID of the role to assign to the group\n */\n roleId: string;\n };\n };\n };\n responses: {\n /** @description Group role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/groups/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Delete group role\n * @description Remove a role from a group\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update group role\n * @description Update an existing group role\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** Format: uuid */\n groupId?: string;\n /** Format: uuid */\n roleId?: string;\n };\n };\n };\n responses: {\n /** @description Group role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Group role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all guardians\n * @description Retrieve a list of all guardians in the system\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardians */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new guardian\n * @description Create a new guardian in the system\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian by ID\n * @description Retrieve detailed information about a specific guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete guardian\n * @description Remove a guardian from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update guardian\n * @description Update guardian information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateGuardianDto\"];\n };\n };\n responses: {\n /** @description Guardian updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Guardian\"];\n /** @example Guardian updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/guardians/{id}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get guardian's users\n * @description Retrieve all users (students) associated with a guardian\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of guardian's users */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/assign\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Assign guardian to user\n * @description Link a guardian to a user (student)\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignGuardianToUserDto\"];\n };\n };\n responses: {\n /** @description Guardian assigned to user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian assigned to user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/guardians/{guardianId}/users/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove guardian from user\n * @description Remove the link between a guardian and a user (student)\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Guardian ID */\n guardianId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Guardian removed from user successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Guardian removed from user successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all classrooms of an institution\n * @description Retrieve a list of all classrooms associated with a specific institution, including shift and serie information. Optionally includes user count for each classroom.\n */\n get: {\n parameters: {\n query?: {\n /** @description When true, includes a userCount field with the number of users registered in each classroom */\n includeUserCount?: boolean;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution classrooms */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: (components[\"schemas\"][\"InstitutionClassroom\"] & {\n /**\n * @description Number of users registered in this classroom (only present when includeUserCount=true)\n * @example 25\n */\n userCount?: number;\n })[];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a classroom with an institution\n * @description Create a new association between a classroom and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/classrooms/{classroomId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific classroom of an institution\n * @description Retrieve details of a specific classroom associated with an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a classroom from an institution\n * @description Remove the association between a classroom and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Classroom removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution classroom\n * @description Update the status of a classroom in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Classroom ID */\n classroomId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionClassroomDto\"];\n };\n };\n responses: {\n /** @description Institution classroom updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all groups of an institution\n * @description Retrieve a list of all groups associated with a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Associate a group with an institution\n * @description Create a new association between a group and an institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Group associated successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/{groupId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n /**\n * Remove a group from an institution\n * @description Remove the association between a group and an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Group removed from institution successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution group quantity\n * @description Update the available quantity for a group in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Group ID */\n groupId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionGroupDto\"];\n };\n };\n responses: {\n /** @description Institution group updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionGroup\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/groups/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get all users of all groups in an institution\n * @description Retrieve all users from all groups associated with a specific institution.\n * Returns a map where keys are group IDs and values are arrays of users in each group.\n * This is more efficient than calling /groups/{id}/users multiple times.\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Users grouped by group ID */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n /**\n * @example {\n * \"status\": \"success\",\n * \"data\": {\n * \"group-uuid-1\": [\n * {\n * \"id\": \"user-uuid-1\",\n * \"firstName\": \"John\",\n * \"lastName\": \"Doe\",\n * \"email\": \"john@example.com\",\n * \"assignedAt\": \"2024-01-15T10:30:00Z\"\n * },\n * {\n * \"id\": \"user-uuid-2\",\n * \"firstName\": \"Jane\",\n * \"lastName\": \"Smith\",\n * \"email\": \"jane@example.com\",\n * \"assignedAt\": \"2024-01-16T14:20:00Z\"\n * }\n * ],\n * \"group-uuid-2\": [\n * {\n * \"id\": \"user-uuid-3\",\n * \"firstName\": \"Bob\",\n * \"lastName\": \"Wilson\",\n * \"email\": \"bob@example.com\",\n * \"assignedAt\": \"2024-01-17T09:15:00Z\"\n * }\n * ]\n * }\n * }\n */\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @description Map of group IDs to arrays of users */\n data?: {\n [key: string]: {\n /** Format: uuid */\n id?: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n document?: string;\n phone?: string;\n isActive?: boolean;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string;\n }[];\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all registrations of an institution\n * @description Retrieve a list of all users registered in a specific institution, including classroom assignments\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institution registrations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Register a user in an institution\n * @description Create a new registration for a user in an institution, optionally assigning them to a classroom\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description User registered successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get a specific registration\n * @description Retrieve details of a specific user registration in an institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Remove a registration\n * @description Remove a user's registration from an institution\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Registration removed successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update a registration\n * @description Update a user's registration details in an institution\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionRegistrationDto\"];\n };\n };\n responses: {\n /** @description Registration updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/user/{userId}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get registration by user ID\n * @description Retrieve a user's registration in a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description User ID */\n userId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User registration details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{institutionId}/registrations/{registrationId}/classroom\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n /**\n * Assign user to a classroom\n * @description Assign or change a user's classroom in an institution. Send null to remove assignment.\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n /** @description Registration ID */\n registrationId: string;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"AssignClassroomDto\"];\n };\n };\n responses: {\n /** @description Classroom assigned successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionRegistration\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all institutions\n * @description Retrieve a list of all educational institutions\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by institution name */\n name?: string;\n /** @description Filter by institution code */\n code?: string;\n /** @description Filter by organization ID */\n organizationId?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in institution name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new institution\n * @description Create a new educational institution\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/institutions/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get institution by ID\n * @description Retrieve detailed information about a specific institution\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete institution\n * @description Remove an institution from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Institution deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update institution\n * @description Update institution information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateInstitutionDto\"];\n };\n };\n responses: {\n /** @description Institution updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 409: components[\"responses\"][\"Conflict\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/institutions/{institutionId}/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users from an institution\n * @description Retrieve a paginated list of all users registered in an institution with advanced filtering options\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by classroom (institution_classroom_id) */\n classroomId?: string;\n /** @description Filter by user active status */\n isActive?: boolean;\n /** @description Filter users by group type (e.g., student, teacher, school-director, other) */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** @description Filter users with certificates (true) or without (false) */\n hasCertificates?: boolean;\n /** @description Filter users with guardian (true) or without (false) */\n hasGuardian?: boolean;\n /** @description Search by email, first name, last name, or full name (case-insensitive) */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n institutionId: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users from the institution */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InstitutionUserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all organizations\n * @description Retrieve a list of all organizations with optional filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter by organization name */\n name?: string;\n /** @description Filter by organization type (municipal, estadual, federal, privada) */\n type?: string;\n /** @description Filter by active status */\n isActive?: boolean;\n /** @description Search in organization name */\n search?: string;\n /** @description Page number */\n page?: number;\n /** @description Items per page */\n limit?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of organizations */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"][];\n meta?: {\n total?: number;\n page?: number;\n limit?: number;\n totalPages?: number;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new organization\n * @description Create a new organization in the hierarchy\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/organizations/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get organization by ID\n * @description Retrieve detailed information about a specific organization\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete organization\n * @description Remove an organization from the system. Cannot delete organizations with children.\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Organization deleted successfully */\n 204: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update organization\n * @description Update organization information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateOrganizationDto\"];\n };\n };\n responses: {\n /** @description Organization updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Organization\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/reports/dashboard\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data (global)\n * @description Retorna dados agregados do dashboard para todas as instituições (requer permissão de admin)\n */\n get: {\n parameters: {\n query?: {\n /** @description ID da instituição (opcional) */\n institutionId?: string;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/dashboard/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get dashboard data for specific institution\n * @description Retorna dados agregados do dashboard para uma instituição específica\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Dashboard data retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"DashboardResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Institution not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area (global)\n * @description Retorna distribuição de realizações de cursos por área/categoria\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/courses-by-area/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get courses distribution by area for specific institution\n * @description Retorna distribuição de realizações de cursos por área/categoria para uma instituição\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Courses by area retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n areas?: components[\"schemas\"][\"AreaData\"][];\n };\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate (global)\n * @description Retorna taxa de adesão (alunos únicos que acessaram) por mês nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/adhesion-rate/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get adhesion rate for specific institution\n * @description Retorna taxa de adesão para uma instituição nos últimos 6 meses\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Adhesion rate retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"AdhesionRateResponse\"];\n };\n };\n };\n /** @description Invalid institution ID */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities (global)\n * @description Retorna atividades recentes dos alunos (certificados emitidos e cursos iniciados)\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/recent-activities/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get recent activities for specific institution\n * @description Retorna atividades recentes dos alunos de uma instituição\n */\n get: {\n parameters: {\n query?: {\n /** @description Período de consulta */\n period?: \"7days\" | \"30days\" | \"all\";\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Recent activities retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"RecentActivitiesResponse\"];\n };\n };\n };\n /** @description Invalid institution ID or period */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students (global)\n * @description Retorna top 10 alunos baseado em filtro escolhido\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/reports/top-students/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get top students for specific institution\n * @description Retorna top 10 alunos de uma instituição baseado em filtro\n */\n get: {\n parameters: {\n query: {\n /** @description Tipo de filtro para ordenação */\n filterType: \"nota\" | \"engajamento\" | \"conclusao\";\n /** @description Ano para filtrar dados (padrão ano atual) */\n year?: number;\n };\n header?: never;\n path: {\n /** @description Institution ID */\n id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Top students retrieved successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"TopStudentsResponse\"];\n };\n };\n };\n /** @description Invalid institution ID, filterType or year */\n 400: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Unauthorized */\n 401: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Internal server error */\n 500: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all roles\n * @description Retrieve a paginated list of roles with optional search filters\n */\n get: {\n parameters: {\n query?: {\n /** @description Search roles by name */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of roles */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new role\n * @description Create a new role in the system and sync with Keycloak\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateRoleDto\"];\n };\n };\n responses: {\n /** @description Role created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Role already exists */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role by ID\n * @description Retrieve detailed information about a specific role\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete role\n * @description Remove a role from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Role deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Role deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update role\n * @description Update role information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateRoleDto\"];\n };\n };\n responses: {\n /** @description Role updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Role\"];\n /** @example Role updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/roles/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get role's groups\n * @description Retrieve all groups that have this role assigned\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of groups with this role */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/roles/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync roles with Keycloak\n * @description Synchronize all roles with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Roles synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Roles synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all series\n * @description Retrieve a list of all educational series/grades\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of series */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new serie\n * @description Create a new educational serie/grade\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/series/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get serie by ID\n * @description Retrieve detailed information about a specific serie/grade\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete serie\n * @description Remove a serie from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Serie deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Serie deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update serie\n * @description Update serie information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateSerieDto\"];\n };\n };\n responses: {\n /** @description Serie updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Serie\"];\n /** @example Serie updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/shifts\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all shifts\n * @description Retrieve a list of all institution shifts (manhã, tarde, noite)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of shifts */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"][];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new shift\n * @description Create a new institution shift\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CreateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift created successfully */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift created successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/shifts/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get shift by ID\n * @description Retrieve detailed information about a specific shift\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete shift\n * @description Remove a shift from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Shift deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example Shift deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update shift\n * @description Update shift information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateShiftDto\"];\n };\n };\n responses: {\n /** @description Shift updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Shift\"];\n /** @example Shift updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/superset/dashboard/{dash_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Get Superset dashboard guest token\n * @description Generate a guest token to embed a Superset dashboard with optional filters\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description The Superset dashboard ID */\n dash_id: string;\n };\n cookie?: never;\n };\n requestBody?: {\n content: {\n \"application/json\": {\n /**\n * @description Optional filters to apply to the dashboard (key-value pairs)\n * @example {\n * \"institution_id\": \"123\",\n * \"course_id\": \"456\"\n * }\n */\n filters?: {\n [key: string]: string;\n };\n };\n };\n };\n responses: {\n /** @description Dashboard token generated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: {\n /** @description Guest token for embedding the dashboard */\n token?: string;\n /** @description The dashboard ID */\n dashboardId?: string;\n };\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description Forbidden - Insufficient permissions */\n 403: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n /** @description Dashboard not found */\n 404: {\n headers: {\n [name: string]: unknown;\n };\n content?: never;\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/me\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get current authenticated user\n * @description Returns the profile information of the currently authenticated user including:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations with detailed classroom information (institutionRegistrations)\n * - Institution data\n * - Classroom assignment (institutionClassroom)\n * - Classroom details (name, shift, serie)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description Current user information with all related entities */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * List all users\n * @description Retrieve a paginated list of users with optional search filters.\n * Each user includes detailed information about:\n * - User groups (userGroups)\n * - User guardians (userGuardians)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution details\n * - Classroom assignment via institutionClassroom\n * - Complete classroom information (name, shift, serie)\n * - Certificate count (certificatesCount)\n */\n get: {\n parameters: {\n query?: {\n /** @description Filter users by email */\n email?: string;\n /** @description Filter users by document number */\n document?: number;\n /** @description Filter only users that are students */\n only_students?: boolean;\n /** @description Filter users by institution ID (only returns users registered in that institution) */\n institution_id?: string;\n /** @description Search users by name or email */\n search?: string;\n /** @description Page number */\n page?: components[\"parameters\"][\"page\"];\n /** @description Items per page */\n limit?: components[\"parameters\"][\"limit\"];\n };\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of users with detailed institution and classroom information */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"UserListResponse\"];\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n /**\n * Create a new user\n * @description Creates a new user following this flow:\n * 1. Creates the user in Keycloak with username, email, password, and profile information\n * 2. Retrieves the generated Keycloak user ID\n * 3. Creates the user in MongoDB using the Keycloak ID as the primary key\n *\n * Note: The user ID is automatically generated by Keycloak and should NOT be provided in the request.\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": {\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /**\n * @description Password for the user's Keycloak account\n * @example SecurePassword123!\n */\n password: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-15T00:00:00.000Z\n */\n birthdate?: string;\n };\n };\n };\n responses: {\n /** @description User created successfully in both Keycloak and MongoDB */\n 201: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n /** @description User already exists (either in Keycloak or MongoDB) */\n 409: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user by ID\n * @description Retrieve detailed information about a specific user including related data:\n * - User groups (userGroups) with group details\n * - User guardians (userGuardians)\n * - Certificates (certificates)\n * - Institution registrations (institutionRegistrations) with:\n * - Institution information (id, name, code, etc.)\n * - Classroom assignment (institutionClassroom)\n * - Complete classroom details including:\n * - Classroom name\n * - Shift (manhã, tarde, noite)\n * - Serie (grade level)\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User information with all related entities including classroom details */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n /**\n * Delete user\n * @description Remove a user from the system\n */\n delete: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User deleted successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n /** @example User deleted successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n options?: never;\n head?: never;\n /**\n * Update user\n * @description Update user information\n */\n patch: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"UpdateUserDto\"];\n };\n };\n responses: {\n /** @description User updated successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User updated successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n trace?: never;\n };\n \"/users/{id}/groups\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's groups\n * @description Retrieve all groups that a user belongs to\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's groups */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Group\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/certificates\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's certificates\n * @description Retrieve all certificates earned by a user\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's certificates */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Certificate\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/institutions\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /**\n * Get user's institutions\n * @description Retrieve all institutions where the user is registered\n */\n get: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description List of user's institutions */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"Institution\"][];\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/users/{id}/sync\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /**\n * Sync user with Keycloak\n * @description Synchronize user data with Keycloak identity provider\n */\n post: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Resource ID */\n id: components[\"parameters\"][\"id\"];\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n /** @description User synchronized successfully */\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"];\n /** @example User synchronized with Keycloak successfully */\n message?: string;\n };\n };\n };\n 400: components[\"responses\"][\"BadRequest\"];\n 401: components[\"responses\"][\"Unauthorized\"];\n 404: components[\"responses\"][\"NotFound\"];\n 500: components[\"responses\"][\"ServerError\"];\n };\n };\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n Error: {\n /** @example error */\n status?: string;\n /** @example Error message */\n message?: string;\n /** @example Detailed error information */\n errors?: string;\n };\n Success: {\n /** @example success */\n status?: string;\n data?: Record<string, never>;\n message?: string;\n };\n PaginationMeta: {\n /** @example 100 */\n total?: number;\n /** @example 1 */\n page?: number;\n /** @example 10 */\n limit?: number;\n /** @example 10 */\n totalPages?: number;\n };\n User: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: number | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description User's group associations */\n userGroups?: components[\"schemas\"][\"UserGroup\"][];\n /** @description User's guardian associations */\n userGuardians?: components[\"schemas\"][\"UserGuardian\"][];\n /** @description User's certificates */\n certificates?: components[\"schemas\"][\"Certificate\"][];\n /** @description User's institution registrations */\n institutionRegistrations?: components[\"schemas\"][\"InstitutionRegistration\"][];\n };\n UpdateUserDto: {\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"User\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n Group: {\n /**\n * Format: uuid\n * @description Keycloak Group ID\n */\n id?: string;\n /** @example students */\n name?: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @example false\n */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @example student\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateGroupDto: {\n /** @example students */\n name: string;\n /**\n * @description If true, group is automatically associated when creating institutions\n * @default false\n */\n isDefault: boolean;\n /**\n * @description Type of the group\n * @default other\n * @enum {string}\n */\n type: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n UpdateGroupDto: {\n /** @example students */\n name?: string;\n /** @description If true, group is automatically associated when creating institutions */\n isDefault?: boolean;\n /**\n * @description Type of the group\n * @enum {string}\n */\n type?: \"student\" | \"teacher\" | \"school-director\" | \"other\";\n };\n AssignUserToGroupDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n groupId: string;\n /** Format: uuid */\n assignedBy?: string;\n };\n UserGroup: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n groupId?: string;\n /** Format: date-time */\n assignedAt?: string;\n /** Format: uuid */\n assignedBy?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n UserGuardian: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n guardianId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n guardian?: components[\"schemas\"][\"Guardian\"];\n };\n /** @description User with institution registration details (returned by GET /institutions/{institutionId}/users) */\n InstitutionUser: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id?: string;\n /** @example John */\n firstName?: string;\n /** @example Doe */\n lastName?: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n /** @example 12345678901 */\n document?: string | null;\n /** @enum {string|null} */\n gender?: \"male\" | \"female\" | \"other\" | null;\n /**\n * @description Indicates if the user is active\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n birthdate?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /**\n * @description Number of certificates the user has\n * @example 5\n */\n certificatesCount?: number;\n /** @description User's guardian associations */\n userGuardians?: {\n /** Format: uuid */\n id?: string;\n guardian?: {\n /** Format: uuid */\n id?: string;\n /** @example Maria Silva */\n name?: string;\n /**\n * Format: email\n * @example maria@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string | null;\n };\n }[];\n /** @description User's registration info in the institution */\n institutionRegistration?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the registration is active\n * @example true\n */\n isActive?: boolean;\n /** @description Classroom assignment details */\n institutionClassroom?: {\n /** Format: uuid */\n id?: string;\n classroom?: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** @description Grade level information */\n serie?: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n } | null;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: {\n /** Format: uuid */\n id?: string;\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n } | null;\n } | null;\n } | null;\n };\n };\n InstitutionUserListResponse: {\n /** @example success */\n status?: string;\n data?: components[\"schemas\"][\"InstitutionUser\"][];\n meta?: components[\"schemas\"][\"PaginationMeta\"];\n };\n InstitutionRegistration: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n institutionId?: string;\n /**\n * Format: uuid\n * @description ID of the institution classroom assignment\n */\n institutionClassroomId?: string | null;\n /**\n * @description Indicates if the user is active in the institution\n * @example true\n */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Institution details */\n institution?: components[\"schemas\"][\"Institution\"];\n /** @description Classroom assignment with complete details (classroom, shift, serie) */\n institutionClassroom?: components[\"schemas\"][\"InstitutionClassroom\"];\n };\n InstitutionClassroom: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Indicates if the classroom is active\n * @example true\n */\n isActive?: boolean;\n /** Format: uuid */\n institutionId?: string;\n /** Format: uuid */\n classroomId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Complete classroom information including shift and serie */\n classroom?: components[\"schemas\"][\"Classroom\"];\n /**\n * @description Number of users registered in this classroom (only returned when includeUserCount=true)\n * @example 25\n */\n userCount?: number | null;\n };\n Role: {\n /**\n * Format: uuid\n * @description Keycloak Role ID\n */\n id?: string;\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string | null;\n /**\n * Format: uuid\n * @description Application ID if this is a client role\n */\n applicationId?: string | null;\n /** @description Application details if this is a client role */\n application?: components[\"schemas\"][\"Application\"];\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateRoleDto: {\n /** @example admin */\n name: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n /**\n * Format: uuid\n * @description Application ID to create this role as a client role (optional - if not provided, creates a realm role)\n * @example 123e4567-e89b-12d3-a456-426614174000\n */\n applicationId?: string;\n };\n UpdateRoleDto: {\n /** @example admin */\n name?: string;\n /**\n * @description Role description\n * @example Administrator role with full permissions\n */\n description?: string;\n };\n Institution: {\n /** Format: uuid */\n id?: string;\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /** Format: uri */\n logoUrl?: string | null;\n /** Format: uri */\n capaUrl?: string | null;\n /** Format: uuid */\n addressId?: string | null;\n /** Format: uuid */\n institutionRewardId?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Organization: {\n /** Format: uuid */\n id?: string;\n /** @example Municipal Education Department */\n name?: string;\n /** Format: uuid */\n parentId?: string | null;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n parent?: components[\"schemas\"][\"Organization\"];\n children?: components[\"schemas\"][\"Organization\"][];\n };\n CreateOrganizationDto: {\n /** @example Municipal Education Department */\n name: string;\n /**\n * Format: uuid\n * @description Parent organization ID (optional)\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n };\n UpdateOrganizationDto: {\n /** @example Municipal Education Department */\n name?: string;\n /**\n * Format: uuid\n * @description Parent organization ID\n */\n parentId?: string;\n /**\n * @description Organization type (municipal, estadual, federal, privada)\n * @example municipal\n */\n type?: string;\n /** @example true */\n isActive?: boolean;\n };\n Course: {\n /** Format: uuid */\n id?: string;\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string | null;\n quizId?: string | null;\n /** @example true */\n isActive?: boolean;\n /** @enum {string|null} */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\" | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Certificate: {\n /** Format: uuid */\n id?: string;\n /** Format: uuid */\n userId?: string;\n /** Format: uuid */\n courseId?: string | null;\n /** Format: uuid */\n courseModuleId?: string | null;\n quizId?: string | null;\n quizTitle?: string | null;\n quizCategory?: string | null;\n attemptId?: string | null;\n attemptScore?: number | null;\n attemptPassed?: boolean | null;\n attemptTimeTakenInMinutes?: number | null;\n /** Format: date-time */\n attemptCompletedAt?: string | null;\n certificateId?: string | null;\n certificateNumber?: string | null;\n /** Format: date-time */\n certificateIssuedAt?: string | null;\n /** Format: uri */\n certificateDownloadUrl?: string | null;\n /** Format: date-time */\n dispatchedAt?: string | null;\n /** Format: date-time */\n insertedAt?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Guardian: {\n /** Format: uuid */\n id?: string;\n /** Format: email */\n email?: string;\n phone?: string | null;\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Address: {\n /** Format: uuid */\n id?: string;\n address?: string;\n number?: number | null;\n zip?: number | null;\n neighborhood?: string | null;\n city?: string;\n state?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Category: {\n /** Format: uuid */\n id?: string;\n /** @example Essential Skills */\n name?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Classroom: {\n /** Format: uuid */\n id?: string;\n /** @example 9º Ano A */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n /** @description Shift information (manhã, tarde, noite) */\n shift?: components[\"schemas\"][\"Shift\"];\n /** @description Serie/grade level information */\n serie?: components[\"schemas\"][\"Serie\"];\n };\n Serie: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Grade level value (1-12)\n * @example 9\n */\n value?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Shift: {\n /** Format: uuid */\n id?: string;\n /**\n * @description Shift name in Portuguese\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n Application: {\n /**\n * Format: uuid\n * @description Keycloak Client ID\n */\n id: string;\n /** @description Keycloak Client Code */\n code: string;\n /** @description Keycloak Client Name */\n name: string;\n /** @description Application description */\n description?: string | null;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n };\n CreateApplicationDto: {\n /** @description Unique application code */\n code: string;\n /** @description Application name */\n name: string;\n /** @description Application description */\n description?: string;\n };\n UpdateApplicationDto: {\n /** @description Application name */\n name?: string;\n /** @description Application description */\n description?: string;\n };\n AuthenticatedUser: {\n /** @description Keycloak user ID */\n id?: string;\n /** @description User email address */\n email?: string;\n /** @description User first name */\n firstName?: string;\n /** @description User last name */\n lastName?: string;\n /** @description Username */\n username?: string;\n /** @description Email verification status */\n emailVerified?: boolean;\n /** @description User roles */\n roles?: string[];\n /** @description User groups */\n groups?: string[];\n };\n AuthTokenResponse: {\n /** @example success */\n status?: string;\n data?: {\n /** @description JWT token for TheMembers authentication */\n token?: string;\n user?: {\n email?: string;\n name?: string;\n sub?: string;\n };\n };\n };\n CreateInstitutionClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to associate with the institution\n */\n classroomId: string;\n /**\n * @description Whether the classroom is active in the institution\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionClassroomDto: {\n /** @description Whether the classroom is active in the institution */\n isActive?: boolean;\n };\n InstitutionGroup: {\n /**\n * Format: uuid\n * @description Unique identifier\n */\n id?: string;\n /**\n * Format: uuid\n * @description Institution ID\n */\n institutionId?: string;\n /**\n * Format: uuid\n * @description Group ID\n */\n groupId?: string;\n /** @description Available quantity for this group in the institution */\n availableQuantity?: number;\n /** Format: date-time */\n createdAt?: string;\n /** Format: date-time */\n updatedAt?: string;\n group?: components[\"schemas\"][\"Group\"];\n };\n CreateInstitutionGroupDto: {\n /**\n * Format: uuid\n * @description Group ID to associate with the institution\n */\n groupId: string;\n /**\n * @description Available quantity for this group\n * @default 0\n */\n availableQuantity: number;\n };\n UpdateInstitutionGroupDto: {\n /** @description New available quantity for this group */\n availableQuantity: number;\n };\n CreateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description User ID to register in the institution\n */\n userId: string;\n /**\n * Format: uuid\n * @description Optional classroom ID to assign the user to\n */\n institutionClassroomId?: string | null;\n /**\n * @description Whether the registration is active\n * @default true\n */\n isActive: boolean;\n };\n UpdateInstitutionRegistrationDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove)\n */\n institutionClassroomId?: string | null;\n /** @description Whether the registration is active */\n isActive?: boolean;\n };\n AssignClassroomDto: {\n /**\n * Format: uuid\n * @description Classroom ID to assign the user to (null to remove assignment)\n */\n institutionClassroomId?: string | null;\n };\n StudentWithClass: {\n /** Format: uuid */\n _id?: string;\n name?: string;\n /** Format: email */\n email?: string;\n document?: string;\n /** Format: uuid */\n classId?: string;\n className?: string;\n };\n DashboardResponse: {\n totalAlunos?: number;\n listaAlunos?: components[\"schemas\"][\"StudentWithClass\"][];\n /** Format: float */\n taxaConclusao?: number;\n /** Format: float */\n taxaConclusaoMesAnterior?: number;\n /** Format: float */\n taxaConclusaoTrend?: number;\n /** Format: float */\n mediaEngajamento?: number;\n /** Format: float */\n mediaEngajamentoMesAnterior?: number;\n /** Format: float */\n mediaEngajamentoTrend?: number;\n aulasAssistidas?: number;\n aulasAssitidasMesAnterior?: number;\n /** Format: float */\n aulasAssitidasTrend?: number;\n };\n AreaData: {\n area?: string;\n /** Format: float */\n percentage?: number;\n count?: number;\n total?: number;\n };\n MonthlyLogin: {\n month?: string;\n count?: number;\n };\n AdhesionRateResponse: {\n monthlyLogins?: components[\"schemas\"][\"MonthlyLogin\"][];\n totalLogins?: number;\n period?: string;\n };\n RecentActivity: {\n studentName?: string;\n courseName?: string;\n /** @enum {string} */\n action?: \"iniciou_curso\" | \"emitiu_certificado\";\n activityText?: string;\n timestamp?: string;\n /** @enum {string} */\n activityType?: \"course_start\" | \"certificate\";\n };\n RecentActivitiesResponse: {\n activities?: components[\"schemas\"][\"RecentActivity\"][];\n totalActivities?: number;\n };\n TopStudent: {\n /** Format: uuid */\n studentId?: string;\n studentName?: string;\n /** Format: email */\n studentEmail?: string;\n rank?: number;\n /** Format: float */\n averageGrade?: number;\n /** Format: float */\n engagementRate?: number;\n /** Format: float */\n completionRate?: number;\n profileUrl?: string;\n };\n TopStudentsResponse: {\n students?: components[\"schemas\"][\"TopStudent\"][];\n /** @enum {string} */\n filterType?: \"nota\" | \"engajamento\" | \"conclusao\";\n totalStudents?: number;\n year?: number;\n };\n CreateUserDto: {\n /**\n * Format: uuid\n * @description Keycloak User ID\n */\n id: string;\n /** @example John */\n firstName: string;\n /** @example Doe */\n lastName: string;\n /**\n * Format: email\n * @example john.doe@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 12345678901 */\n document?: number;\n /**\n * @example male\n * @enum {string}\n */\n gender?: \"male\" | \"female\" | \"other\";\n /**\n * Format: date-time\n * @example 1990-01-01T00:00:00Z\n */\n birthdate?: string;\n };\n UserResponse: components[\"schemas\"][\"User\"];\n CreateInstitutionDto: {\n /** @example Academe Institution */\n name: string;\n /** @example SCH001 */\n code: string;\n /** @example 12.345.678/0001-90 */\n document: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents: number;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n UpdateInstitutionDto: {\n /** @example Academe Institution */\n name?: string;\n /** @example SCH001 */\n code?: string;\n /** @example 12.345.678/0001-90 */\n document?: string;\n /**\n * Format: email\n * @example institution@academe.com.br\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example 500 */\n maxStudents?: number;\n /** @example true */\n isActive?: boolean;\n /**\n * Format: uri\n * @example https://example.com/logo.png\n */\n logoUrl?: string;\n /**\n * Format: uri\n * @example https://example.com/capa.png\n */\n capaUrl?: string;\n /** Format: uuid */\n addressId?: string;\n /** Format: uuid */\n institutionRewardId?: string;\n };\n CreateCourseDto: {\n /** @example Introduction to Programming */\n description: string;\n /** Format: uuid */\n categoryId: string;\n /** @example 40 */\n duration: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /**\n * @default true\n * @example true\n */\n isActive: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n UpdateCourseDto: {\n /** @example Introduction to Programming */\n description?: string;\n /** Format: uuid */\n categoryId?: string;\n /** @example 40 */\n duration?: number;\n /**\n * @example hours\n * @enum {string}\n */\n durationType?: \"hours\" | \"days\" | \"weeks\" | \"months\";\n externalId?: string;\n quizId?: string;\n /** @example true */\n isActive?: boolean;\n /**\n * @example intermediate\n * @enum {string}\n */\n level?: \"beginner\" | \"intermediate\" | \"advanced\" | \"expert\";\n };\n CreateCertificateDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n courseId?: string;\n /** Format: uuid */\n courseModuleId?: string;\n quizId?: string;\n quizTitle?: string;\n quizCategory?: string;\n attemptId?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateId?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n };\n UpdateCertificateDto: {\n quizTitle?: string;\n quizCategory?: string;\n attemptScore?: number;\n attemptPassed?: boolean;\n attemptTimeTakenInMinutes?: number;\n /** Format: date-time */\n attemptCompletedAt?: string;\n certificateNumber?: string;\n /** Format: date-time */\n certificateIssuedAt?: string;\n /** Format: uri */\n certificateDownloadUrl?: string;\n /** Format: date-time */\n dispatchedAt?: string;\n };\n CreateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name: string;\n };\n UpdateGuardianDto: {\n /**\n * Format: email\n * @example guardian@example.com\n */\n email?: string;\n /** @example +5511999999999 */\n phone?: string;\n /** @example Jane Doe */\n name?: string;\n };\n CreateCategoryDto: {\n /** @example Essential Skills */\n name: string;\n };\n UpdateCategoryDto: {\n /** @example Essential Skills */\n name?: string;\n };\n CreateClassroomDto: {\n /** @example Room 101 */\n name: string;\n /** Format: uuid */\n shiftId: string;\n /** Format: uuid */\n serieId: string;\n };\n UpdateClassroomDto: {\n /** @example Room 101 */\n name?: string;\n /** Format: uuid */\n shiftId?: string;\n /** Format: uuid */\n serieId?: string;\n };\n CreateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value: number;\n };\n UpdateSerieDto: {\n /**\n * @description Grade/year level (e.g., 1 for 1st grade, 2 for 2nd grade)\n * @example 1\n */\n value?: number;\n };\n CreateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name: \"manhã\" | \"tarde\" | \"noite\";\n };\n UpdateShiftDto: {\n /**\n * @example manhã\n * @enum {string}\n */\n name?: \"manhã\" | \"tarde\" | \"noite\";\n };\n AssignGuardianToUserDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n guardianId: string;\n };\n RegisterUserToInstitutionDto: {\n /** Format: uuid */\n userId: string;\n /** Format: uuid */\n institutionId: string;\n };\n };\n responses: {\n /** @description Resource not found */\n NotFound: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Authentication required */\n Unauthorized: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Insufficient permissions */\n Forbidden: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Invalid request */\n BadRequest: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Internal server error */\n ServerError: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n /** @description Resource already exists or conflict */\n Conflict: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"Error\"];\n };\n };\n };\n parameters: {\n /** @description Resource ID */\n id: string;\n /** @description Page number */\n page: number;\n /** @description Items per page */\n limit: number;\n /** @description Search term */\n search: string;\n };\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type $defs = Record<string, never>;\nexport type operations = Record<string, never>;\n"],"names":["React","_jsx","React3","GLOBAL_ROLES","createContext","useState","useRef","useEffect","useMemo","useCallback","useContext","forwardRef","createElement","Loader2Icon","_jsxs","BACKOFFICE_ROLES","DASHBOARD_ROLES","APPLICATIONS_ROLES","MIKE_ROLES"],"mappings":";;;;;AAAA,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAQ,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;;ACSxW,MAAM,MAAM,GAAGA,MAAK,CAAC,UAAU,CACpC,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IAC3E,MAAM,WAAW,GAAG,6GAA6G;AAEjI,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,OAAO,EAAE,8DAA8D;AACvE,QAAA,SAAS,EAAE,8DAA8D;AACzE,QAAA,OAAO,EAAE,4FAA4F;KACtG;AAED,IAAA,MAAM,WAAW,GAAG;AAClB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,EAAE,EAAE,qBAAqB;AACzB,QAAA,EAAE,EAAE,mBAAmB;KACxB;AAED,IAAA,QACEC,cAAA,CAAA,QAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAI,CACb,WAAW,EACX,cAAc,CAAC,OAAO,CAAC,EACvB,WAAW,CAAC,IAAI,CAAC,EACjB,SAAS,CACV,EAAA,GACG,KAAK,EAAA,QAAA,EAER,QAAQ,EAAA,CACF;AAEb,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;AC1CtB,MAAM,iBAAiB,SAAS,KAAK,CAAC;AAC7C;AACA,iBAAiB,CAAC,SAAS,CAAC,IAAI,GAAG,mBAAmB;AACtD,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK;AAClE,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;AAC7D,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAY,IAAI,GAAG,GAAG,GAAG,IAAI;AAC7B,QAAQ;AACR,QAAQ,OAAO,GAAG,GAAG,IAAI;AACzB,IAAI,CAAC,CAAC,CAAC;AACP;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC1D,IAAI,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAQ,KAAK,CAAC;AACd,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,MAAM,IAAI,IAAI;AAC1B,YAAY;AACZ,QAAQ,KAAK,CAAC;AACd,YAAY,MAAM,IAAI,GAAG;AACzB,YAAY;AACZ,QAAQ;AACR,YAAY,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACzE;AACA,IAAI,IAAI;AACR,QAAQ,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACvC,IAAI;AACJ,IAAI,OAAO,GAAG,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI;AACJ;AACO,SAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC1C,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,QAAQ,MAAM,IAAI,iBAAiB,CAAC,2CAA2C,CAAC;AAChF,IAAI;AACJ,IAAI,OAAO,KAAK,OAAO,GAAG,EAAE,CAAC;AAC7B,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACtC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,uCAAuC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACxF,IAAI;AACJ,IAAI,IAAI,OAAO;AACf,IAAI,IAAI;AACR,QAAQ,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,kDAAkD,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClH,IAAI;AACJ,IAAI,IAAI;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,MAAM,IAAI,iBAAiB,CAAC,CAAC,gDAAgD,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChH,IAAI;AACJ;;ACxDA;AACA,IAAI,SAAS,GAAG;AAChB,EAAE,KAAK,EAAE,MAAM,MAAM;AACrB,EAAE,IAAI,EAAE,MAAM,MAAM;AACpB,EAAE,IAAI,EAAE,MAAM,MAAM;AACpB,EAAE,KAAK,EAAE,MAAM;AACf,CAAC;AACD,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,GAAG,mBAAmB,CAAC,CAAC,IAAI,KAAK;AACrC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACjC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACnC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACjC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AACjC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO;AACnC,EAAE,OAAO,IAAI;AACb,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AACb,CAAC,CAAC,IAAI,KAAK;AACX,EAAE,SAAS,KAAK,GAAG;AACnB,IAAI,KAAK,GAAG,CAAC;AACb,IAAI,MAAM,GAAG,SAAS;AACtB,EAAE;AACF,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,EAAE,CAAC,eAAe,KAAK,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE;AAC5D,MAAM,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AAC1C,IAAI;AACJ,IAAI,KAAK,GAAG,KAAK;AACjB,EAAE;AACF,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC1B,EAAE,SAAS,SAAS,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,GAAG,KAAK;AAClB,EAAE;AACF,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS;AAC5B,CAAC,EAAE,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC;AACrB,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC;AAC3B,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,EAAE;AACF;AACA,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;AACjB,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;AACtE,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;AAChB,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;AAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;AACrE,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;AAChB,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;AAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;AACrE,IAAI;AACJ,EAAE;AACF,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;AACjB,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;AACtE,IAAI;AACJ,EAAE;AACF;AACA,EAAE,KAAK,CAAC,GAAG,EAAE;AACb,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACnB,IAAI,MAAM,GAAG;AACb,EAAE;AACF,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5C,IAAI,YAAY,CAAC,OAAO,GAAG,MAAM;AACjC,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/B,IAAI,OAAO,YAAY;AACvB,EAAE;AACF,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE;AAC1C,IAAI,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAC/D,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/B,IAAI,OAAO,YAAY;AACvB,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9B,IAAI,OAAO,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM;AACnD,EAAE;AACF;AACA;AACA,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;AAC9B,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAClD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;AAC7B,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;AAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACjD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;AAC7B,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;AAC/B,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AACjD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE;AAC9B,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;AAClD,IAAI;AACJ,EAAE;AACF;AACA,CAAC;AACD,GAAG,CAAC,KAAK,EAAE;AAIX,IAAI,QAAQ,GAAG,MAAM;AACrB;AACA,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI;AACR,MAAM,OAAO,SAAS,CAAC,KAAK,CAAC;AAC7B,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC;AAC1C,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,aAAa,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;AAC9D,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACvG,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACzG,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7D,IAAI,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AACrD,MAAM;AACN,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS;AAC/B,OAAO;AACP,MAAM,UAAU;AAChB,MAAM,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY;AAC3C,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACnF,IAAI,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAChD,EAAE;AACF,EAAE,aAAa,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;AACrE,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACvG,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACzG,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7D,IAAI,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AACrD,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY;AAC3C,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACnF,IAAI,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAChD,EAAE;AACF,CAAC;;AAED;AACA,IAAI,gBAAgB,GAAG,sCAAsC;AAC7D,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtG,IAAI,YAAY,GAAG,MAAM,YAAY,CAAC;AACtC,EAAE,OAAO,WAAW,GAAG;AACvB,IAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC;AAC/B,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA,EAAE,OAAO,cAAc,GAAG;AAC1B,IAAI,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO;AACzC,MAAM,QAAQ;AACd,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE;AACzE,KAAK;AACL,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA,EAAE,OAAO,oBAAoB,GAAG;AAChC,IAAI,OAAO,YAAY,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,cAAc,EAAE;AACxG,EAAE;AACF;AACA;AACA;AACA,EAAE,aAAa,qBAAqB,CAAC,aAAa,EAAE;AACpD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACxB,MAAM,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;AACpF,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACvC,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AAChD,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AAChE,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACxF,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC;AAC5D,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,EAAE,OAAO,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE;AACrD,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACrC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC;AACzB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AAClC,IAAI,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AACtD,IAAI,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;AAChE,IAAI,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC;AACrC,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,aAAa,4BAA4B,CAAC,GAAG,EAAE;AACjD,IAAI,IAAI,UAAU;AAClB,IAAI,QAAQ,GAAG,CAAC,GAAG;AACnB,MAAM,KAAK,KAAK;AAChB,QAAQ,UAAU,GAAG;AACrB,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,UAAU,KAAK,EAAE,GAAG,CAAC,GAAG;AACxB,UAAU,GAAG,EAAE,GAAG,CAAC;AACnB,SAAS;AACT,QAAQ;AACR,MAAM,KAAK,IAAI;AACf,QAAQ,UAAU,GAAG;AACrB,UAAU,KAAK,EAAE,GAAG,CAAC,GAAG;AACxB,UAAU,KAAK,EAAE,GAAG,CAAC,GAAG;AACxB,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AACpB,UAAU,GAAG,EAAE,GAAG,CAAC;AACnB,SAAS;AACT,QAAQ;AACR,MAAM,KAAK,KAAK;AAChB,QAAQ,UAAU,GAAG;AACrB,UAAU,KAAK,EAAE,GAAG,CAAC,GAAG;AACxB,UAAU,KAAK,EAAE,GAAG,CAAC,GAAG;AACxB,UAAU,GAAG,EAAE,GAAG,CAAC;AACnB,SAAS;AACT,QAAQ;AACR,MAAM,KAAK,KAAK;AAChB,QAAQ,UAAU,GAAG;AACrB,UAAU,KAAK,EAAE,GAAG,CAAC,CAAC;AACtB,UAAU,KAAK,EAAE,GAAG,CAAC;AACrB,SAAS;AACT,QAAQ;AACR,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AAC3C;AACA,IAAI,MAAM,oBAAoB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAC/F,IAAI,OAAO,YAAY,CAAC,eAAe,CAAC,oBAAoB,CAAC;AAC7D,EAAE;AACF,EAAE,aAAa,iBAAiB,CAAC;AACjC,IAAI,GAAG;AACP,IAAI,WAAW;AACf,IAAI,UAAU;AACd,IAAI,OAAO;AACX,IAAI;AACJ,GAAG,EAAE;AACL,IAAI,IAAI,WAAW;AACnB,IAAI,IAAI,WAAW;AACnB,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACvC,MAAM,KAAK,EAAE,UAAU,IAAI,IAAI,GAAG,UAAU,GAAG,KAAK;AACpD,MAAM,KAAK,EAAE,GAAG;AAChB,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG;AACxC,KAAK;AACL,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;AACnE,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC;AAC7D,MAAM,OAAO,CAAC,GAAG,GAAG,WAAW;AAC/B,IAAI;AACJ,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,KAAK,GAAG,KAAK;AAC3B,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;AAC/E,MAAM,MAAM,MAAM,GAAG;AACrB,QAAQ,KAAK,EAAE,OAAO;AACtB,QAAQ,KAAK,EAAE,UAAU;AACzB,QAAQ,KAAK,EAAE;AACf,UAAU,KAAK,EAAE,SAAS,CAAC,GAAG;AAC9B,UAAU,KAAK,EAAE,SAAS,CAAC,GAAG;AAC9B,UAAU,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1B,UAAU,GAAG,EAAE,SAAS,CAAC;AACzB;AACA,OAAO;AACP,MAAM,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;AAClF,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,SAAS,EAAE;AACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,iCAAiC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,GAAG;AACjB,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,aAAa,eAAe,CAAC,OAAO,EAAE;AACxC,IAAI,IAAI;AACR,MAAM,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;AAC/E,MAAM,OAAO,MAAM,YAAY,CAAC,4BAA4B,CAAC,SAAS,CAAC;AACvE,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,SAAS,EAAE;AACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,2CAA2C,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,GAAG;AACjB,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,aAAa,gBAAgB,GAAG;AAClC,IAAI,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW;AACjD,MAAM;AACN,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,UAAU,EAAE;AACpB,OAAO;AACP,MAAM,KAAK;AACX,MAAM,CAAC,MAAM,EAAE,QAAQ;AACvB,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,0BAA0B,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,EAAE;AACnG,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,KAAK,EAAE;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,KAAK,EAAE,QAAQ;AACrB,MAAM,KAAK,EAAE,YAAY,CAAC,cAAc,EAAE;AAC1C,MAAM,KAAK,EAAE,GAAG,GAAG,GAAG;AACtB;AACA,MAAM,KAAK,EAAE;AACb,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,OAAO,EAAE,SAAS;AACxB,MAAM,OAAO,EAAE,SAAS;AACxB,MAAM,OAAO,EAAE;AACf,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;AAC3C,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,SAAS,CAAC,+CAA+C,CAAC,CAAC;AAC3G,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACrC,IAAI,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS;AACnD,MAAM,KAAK;AACX,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACnC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,MAAM,KAAK;AACX,MAAM,CAAC,MAAM;AACb,KAAK;AACL,IAAI,OAAO,MAAM,QAAQ,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;AAC/E,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA,YAAY,CAAC,eAAe,GAAG,CAAC,KAAK,KAAK;AAC1C,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAClF,CAAC;AACD,IAAI,WAAW,GAAG,YAAY;;AAE9B;AACA,IAAI,KAAK,GAAG,MAAM;AAClB,EAAE,WAAW,CAAC,KAAK,EAAE;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE;AACxB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvD,EAAE;AACF,EAAE,UAAU,CAAC,EAAE,EAAE;AACjB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,IAAI,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACvC,EAAE;AACF,EAAE,aAAa,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;AAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE;AAClB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE;AACrB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AACvC,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AACrB,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,UAAU,GAAG,MAAM;AACvB;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE;AACjC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI;AAC9B,MAAM,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,GAAG;AACzH,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAC1I,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI;AAC/B,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAC5I,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,OAAO,SAAS,CAAC,QAAQ,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/K,EAAE;AACF,CAAC;;AAED;AACA,IAAI,KAAK,GAAG,MAAM,MAAM,SAAS,KAAK,CAAC;AACvC,EAAE,WAAW,GAAG;AAChB,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AACxB,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM;AAC3B,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE;AAC3D,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC;AACpD,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE;AACrD,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,QAAQ,KAAK,KAAK,CAAC,KAAK,EAAE;AAC1B,MAAM;AACN,IAAI,CAAC;AACL,EAAE;AACF;AACA,EAAE,OAAO,YAAY,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACvC,EAAE;AACF,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC1B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAClE,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,iBAAiB;AAChE,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7D,MAAM,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,IAAI,CAAC,UAAU,CAAC;AAC5F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;AACtD,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU;AACjC,IAAI,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACjE,IAAI,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,GAAG,GAAG,CAAC;AACjF,EAAE;AACF,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,OAAO,IAAI,CAAC,WAAW;AAC3B,EAAE;AACF,EAAE,MAAM,GAAG;AACX,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AACtC,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI;AAC9B,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,QAAQ,GAAG,MAAM;AACrB,EAAE,OAAO,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,EAAE;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC;AAChD,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC;AACtD,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,KAAK,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC7E,IAAI,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC;AACD,IAAI,mBAAmB,GAAG,GAAG;;AAE7B;AACA,IAAI,aAAa,GAAG,cAAc,KAAK,CAAC;AACxC,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AAC1B,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AAClB,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AACrD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,eAAe;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC;AACtD,MAAM,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AACxC,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC3B,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AAC9E,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AAC9D,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;AAC/B,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AACtE,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AACnC,EAAE;AACF,CAAC;;AAED;AACA,IAAI,YAAY,GAAG,cAAc,KAAK,CAAC;AACvC,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,cAAc;AAC9B,EAAE;AACF,CAAC;;AAED;AACA,IAAI,iBAAiB,GAAG,MAAM;AAC9B,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,uBAAuB,CAAC;AAC5D,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,sBAAsB,CAAC;AAC1D,IAAI,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,iCAAiC;AACpF,EAAE;AACF,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;AACxB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,EAAE;AACnE,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU;AAC3C,MAAM,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,QAAQ,CAAC;AAC1E,MAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;AACxB,QAAQ,IAAI,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,kCAAkC;AACzE,QAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE;AAC3B,UAAU,QAAQ,GAAG,CAAC;AACtB,QAAQ;AACR,QAAQ,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,QAAQ,EAAE,SAAS,CAAC;AACpF,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC;AACzF,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACpC,MAAM;AACN,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC;AAClC,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,OAAO,EAAE,SAAS,CAAC;AAChF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAClC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACjC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC;AACxE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAChC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AAC/B,EAAE;AACF;AACA;AACA;AACA,EAAE,sBAAsB,CAAC,EAAE,EAAE;AAC7B,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;AAC7C,EAAE;AACF;AACA;AACA;AACA,EAAE,yBAAyB,CAAC,EAAE,EAAE;AAChC,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA,EAAE,qBAAqB,CAAC,EAAE,EAAE;AAC5B,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5C,EAAE;AACF;AACA;AACA;AACA,EAAE,wBAAwB,CAAC,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;AACxC,EAAE;AACF,CAAC;;AAED;AACA,IAAI,kBAAkB,GAAG,MAAM;AAC/B,EAAE,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,EAAE,YAAY,EAAE;AAC5E,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU;AAChC,IAAI,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAChD,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC;AACnD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;AACtB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK;AAC3B,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AACrF,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AAChC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC;AAC1E,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AACjC,YAAY,IAAI,CAAC,IAAI,EAAE;AACvB,UAAU;AACV,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE;AACzC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC;AAC5E,UAAU,IAAI,CAAC,IAAI,EAAE;AACrB,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/B,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,uCAAuC,CAAC;AAC9E,QAAQ;AACR,MAAM;AACN,IAAI,CAAC;AACL,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAClC,IAAI,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM;AACzC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACzD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACxC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS;AACtC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG;AAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;AAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI;AACpC,EAAE;AACF,EAAE,IAAI,GAAG;AACT,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;AACjC,QAAQ,OAAO,EAAE;AACjB,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;AACnD,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9D,IAAI,CAAC,CAAC;AACN,EAAE;AACF,EAAE,KAAK,CAAC,aAAa,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,EAAE;AAC/C,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa;AACvC,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC9D,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC;AAC5G,IAAI,CAAC;AACL,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;AAClE,EAAE;AACF,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI;AAC9B,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI;AACxB,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,kBAAkB,GAAG,MAAM;AAC/B,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC;AACnD,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE;AACnB,EAAE;AACF,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE;AACnB,EAAE;AACF,EAAE,OAAO,CAAC,GAAG,EAAE;AACf,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5C,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,EAAE;AACF,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;AAC3B,EAAE;AACF,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,EAAE;AACF,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;AACxD,EAAE;AACF,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACxD,EAAE;AACF,CAAC;;AAED;AACA,IAAI,cAAc,GAAG,cAAc,KAAK,CAAC;AACzC,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,IAAI,KAAK,CAAC,OAAO,CAAC;AAClB;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,gBAAgB;AAChC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,EAAE;AACF,CAAC;;AAED;AACA,IAAI,WAAW,GAAG,MAAM;AACxB,EAAE,WAAW,CAAC,sBAAsB,GAAG,EAAE,EAAE,WAAW,GAAG,IAAI,EAAE,aAAa,GAAG,EAAE,EAAE;AACnF,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW;AAClC,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC;AAC5C,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE;AAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,sBAAsB,EAAE,kBAAkB,CAAC;AAC1E,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAChD,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE;AAC3C,IAAI,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI;AACnD,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,MAAM,OAAO,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE;AAC5C,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,GAAG,GAAG,CAAC;AAClF,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE;AAC1C,QAAQ,GAAG,IAAI;AACf,QAAQ,MAAM,EAAE,UAAU,CAAC;AAC3B,OAAO,CAAC;AACR,MAAM,OAAO,QAAQ;AACrB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;AACpE,QAAQ,MAAM,IAAI,YAAY,CAAC,mBAAmB,CAAC;AACnD,MAAM;AACN,MAAM,MAAM,GAAG;AACf,IAAI,CAAC,SAAS;AACd,MAAM,YAAY,CAAC,SAAS,CAAC;AAC7B,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE;AACrB,IAAI,KAAK;AACT,IAAI,WAAW;AACf,IAAI;AACJ,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI;AAC5C,KAAK;AACL,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC;AACjE,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,KAAK;AAClD,IAAI;AACJ,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrC,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;AAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;AAC5G,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;AACpC,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,QAAQ,CAAC,MAAM,CAAC;AACpE,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5D,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACzF,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,WAAW,IAAI,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACrI,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvH,MAAM,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC1D,IAAI;AACJ,IAAI,IAAI,IAAI;AACZ,IAAI,IAAI;AACR,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;AACvD,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG;AAChC,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC;AAC/C,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC;AACrC,MAAM;AACN,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7F,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI;AACR,IAAI,SAAS;AACb,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI;AACJ,GAAG,EAAE;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACnD,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,MAAM,cAAc,EAAE,mCAAmC;AACzD,MAAM,GAAG;AACT,KAAK;AACL,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE;AAC9B,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,GAAG,SAAS;AACrD,IAAI;AACJ,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrC,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;AAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;AACpI,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;AACpC,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,QAAQ,CAAC,MAAM,CAAC;AACpE,IAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC5D,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACzF,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,WAAW,IAAI,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5H,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC9C,IAAI,IAAI,IAAI,GAAG,EAAE;AACjB,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI;AACV,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AACvC,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;AACzD,QAAQ,IAAI,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG;AAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC;AAC/C,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC9C,QAAQ,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACxD,QAAQ,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClE,MAAM;AACN,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE;AACtB,QAAQ,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC;AAC3C,MAAM;AACN,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7F,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,mBAAmB,CAAC,OAAO,EAAE;AAC/B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;AAC7D,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACtD,IAAI,MAAM,gBAAgB,GAAG;AAC7B,MAAM,QAAQ;AACd,MAAM;AACN,KAAK;AACL,IAAI,MAAM,eAAe,GAAG;AAC5B,MAAM;AACN,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,MAAM;AACN,IAAI;AACJ,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACvC,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE;AACrE,QAAQ,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,UAAU,EAAE,gBAAgB,CAAC;AACvF,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjH,QAAQ,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,UAAU,EAAE,eAAe,CAAC;AACnF,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC9I,MAAM,IAAI,OAAO,IAAI,OAAO,KAAK,EAAE,EAAE;AACrC,QAAQ,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO;AACrC,MAAM;AACN,IAAI,CAAC,CAAC;AACN,EAAE;AACF,CAAC;;AAED;AACA,IAAI,eAAe,GAAG,MAAM;AAC5B,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC;AAChD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AAClD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW;AACvC,MAAM,CAAC,0BAA0B,CAAC;AAClC,MAAM,IAAI;AACV,MAAM,IAAI,CAAC,SAAS,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AACpC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC;AAC3D,MAAM,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AACpD,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACjC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC;AACxD,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;AAC9C,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE;AAChD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC;AACvE,MAAM,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB;AAC5E,IAAI;AACJ,EAAE;AACF,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI;AAC5B,EAAE;AACF,EAAE,MAAM,WAAW,GAAG;AACtB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACtD,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,MAAM,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAC1C,MAAM,OAAO,IAAI,CAAC,SAAS;AAC3B,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC5B,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACpF,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,YAAY,CAAC;AAC7D,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AACjL,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAC3D,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC7E,IAAI,OAAO,IAAI,CAAC,SAAS;AACzB,EAAE;AACF,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAC9C,EAAE;AACF,EAAE,wBAAwB,GAAG;AAC7B,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC;AAC9D,EAAE;AACF,EAAE,mBAAmB,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC;AACzD,EAAE;AACF,EAAE,gBAAgB,CAAC,QAAQ,GAAG,IAAI,EAAE;AACpC,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AAChE,EAAE;AACF,EAAE,qBAAqB,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAClE,EAAE;AACF,EAAE,qBAAqB,GAAG;AAC1B,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAClE,EAAE;AACF,EAAE,qBAAqB,CAAC,QAAQ,GAAG,IAAI,EAAE;AACzC,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,QAAQ,CAAC;AACrE,EAAE;AACF,EAAE,eAAe,CAAC,QAAQ,GAAG,IAAI,EAAE;AACnC,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC1D,EAAE;AACF,EAAE,MAAM,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AACrD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7B,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AACnC,MAAM,IAAI,QAAQ,KAAK,IAAI,EAAE;AAC7B,QAAQ,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC;AACnE,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qCAAqC,GAAG,IAAI,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC;AACzB,EAAE;AACF,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACzD,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,MAAM,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC;AACvD,MAAM,OAAO,IAAI,CAAC,YAAY;AAC9B,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACtD,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AAC1H,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;AACxC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACxD,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI;AACnC,IAAI,OAAO,IAAI,CAAC,YAAY;AAC5B,EAAE;AACF,CAAC;;AAED;AACA,IAAI,oBAAoB,GAAG,MAAM;AACjC,EAAE,WAAW,CAAC;AACd,IAAI,MAAM,GAAG,OAAO;AACpB,IAAI,KAAK,GAAG;AACZ,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,sBAAsB,CAAC;AACrD,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AACxB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG;AAC5B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;AACzC,EAAE;AACF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG;AAC5B,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/C,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE;AACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG;AAC5B,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AACrC,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;AACxC,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;AAC9C,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClD,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,CAAC;;AAED;AACA,IAAI,mBAAmB,GAAG,MAAM;AAChC,IAAI,YAAY,GAAG,QAAQ;AAC3B,IAAI,2BAA2B,GAAG,oBAAoB;AACtD,IAAI,6BAA6B,GAAG,EAAE,GAAG,EAAE;AAC3C,IAAI,uBAAuB,GAAG,MAAM;AACpC,EAAE,WAAW,CAAC;AACd;AACA,IAAI,SAAS;AACb,IAAI,WAAW;AACf,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,YAAY;AAChB;AACA,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,aAAa,GAAG,mBAAmB;AACvC,IAAI,KAAK,GAAG,YAAY;AACxB,IAAI,YAAY;AAChB,IAAI,wBAAwB;AAC5B,IAAI,qBAAqB,GAAG,2BAA2B;AACvD,IAAI,+BAA+B,GAAG,OAAO;AAC7C;AACA,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB;AACA,IAAI,oBAAoB,GAAG,IAAI;AAC/B,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,uBAAuB;AAC3B,IAAI,sBAAsB,GAAG,6BAA6B;AAC1D,IAAI,mBAAmB,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE;AAC9C,IAAI,WAAW,GAAG,KAAK;AACvB;AACA,IAAI,UAAU;AACd,IAAI,iCAAiC;AACrC,IAAI,uBAAuB;AAC3B,IAAI,wBAAwB;AAC5B;AACA,IAAI,gBAAgB,GAAG,EAAE;AACzB,IAAI,gBAAgB,GAAG,EAAE;AACzB,IAAI,YAAY,GAAG,EAAE;AACrB,IAAI,IAAI;AACR,IAAI,uBAAuB,GAAG;AAC9B,GAAG,EAAE;AACL,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,WAAW,GAAG,WAAW;AACpC,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,GAAG,SAAS;AAClC,MAAM,IAAI,SAAS,EAAE;AACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7C,UAAU,IAAI,CAAC,WAAW,IAAI,GAAG;AACjC,QAAQ;AACR,QAAQ,IAAI,CAAC,WAAW,IAAI,kCAAkC;AAC9D,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,WAAW,GAAG,WAAW;AAClC,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;AAC5D,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;AACtD,IAAI,IAAI,CAAC,+BAA+B,GAAG,+BAA+B;AAC1E,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;AACxB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU;AAChC,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU;AAChC,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC5B,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,IAAI,IAAI,GAAG,oBAAoB,GAAG,IAAI;AAC1F,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;AACtC,IAAI,IAAI,CAAC,sBAAsB,GAAG,sBAAsB;AACxD,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;AAClD,IAAI,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AAC1D,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;AACpC,IAAI,IAAI,CAAC,iCAAiC,GAAG,iCAAiC;AAC9E,IAAI,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,GAAG,uBAAuB,GAAG,aAAa;AACpG,IAAI,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AAC1D,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,CAAC,UAAU,GAAG,UAAU;AAClC,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,YAAY,GAAG,IAAI,kBAAkB,EAAE;AAClG,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC;AAC3D,IAAI;AACJ,IAAI,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;AAC5D,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE;AACtE,MAAM,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AACrE,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,eAAe,GAAG,MAAM;AAC5B,EAAE,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE;AAC3C,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC;AAChD,IAAI,IAAI,CAAC,iBAAiB,GAAG,OAAO,YAAY,KAAK;AACrD,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC9D,MAAM,IAAI;AACV,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,QAAQ,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC;AAChD,QAAQ,OAAO,OAAO;AACtB,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC;AACnD,QAAQ,MAAM,GAAG;AACjB,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW;AACvC,MAAM,MAAM;AACZ,MAAM,IAAI,CAAC,iBAAiB;AAC5B,MAAM,IAAI,CAAC,SAAS,CAAC;AACrB,KAAK;AACL,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,KAAK,EAAE;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AACpD,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACtD,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE;AACjE,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC;AAC1C,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE;AACxD,MAAM,KAAK;AACX,MAAM,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB;AACzD,MAAM,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC;AACvC,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC;AACvC,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,CAAC;;AAED;AACA,IAAI,WAAW,GAAG,MAAM;AACxB,EAAE,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE;AAC3C,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC;AAC5C,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW;AACvC,MAAM,IAAI,CAAC,SAAS,CAAC,iCAAiC;AACtD,MAAM,IAAI;AACV,MAAM,IAAI,CAAC,SAAS,CAAC;AACrB,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,YAAY,CAAC;AACrB,IAAI,UAAU,GAAG,oBAAoB;AACrC,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY;AAC9C,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS;AACxC,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAChD,IAAI,YAAY;AAChB,IAAI,GAAG;AACP,GAAG,EAAE;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AACvD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACzD,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC5D,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACpD,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AACpE,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC9B,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,KAAK,qBAAqB,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,KAAK,mBAAmB,MAAM,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,CAAC,EAAE;AAClM,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC7D,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,IAAI,SAAS;AACjB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACnE,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,qBAAqB;AAChD,MAAM,KAAK,qBAAqB;AAChC,QAAQ,SAAS,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC;AAC3E,QAAQ;AACR,MAAM,KAAK,oBAAoB;AAC/B,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC7C,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC;AACvD,QAAQ;AACR,QAAQ;AACR,MAAM,KAAK,mBAAmB,EAAE;AAChC,QAAQ,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC;AAC3J,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC7C,QAAQ,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;AACxG,QAAQ,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;AAC1D,QAAQ;AACR,MAAM;AACN;AACA,IAAI,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC3D,MAAM,IAAI,EAAE,MAAM;AAClB,MAAM,SAAS;AACf,MAAM,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB;AAC9D,MAAM,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB;AAC7D,MAAM;AACN,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACjC,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,mBAAmB,CAAC;AAC5B,IAAI,UAAU,GAAG,UAAU;AAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS;AACxC,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAChD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAChC,IAAI,GAAG;AACP,GAAG,EAAE;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;AAC9D,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACzD,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;AACtD,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE;AACjD,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AAChC,IAAI;AACJ,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC9B,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,KAAK,qBAAqB,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,KAAK,mBAAmB,MAAM,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,CAAC,EAAE;AAClM,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC7D,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,IAAI,SAAS;AACjB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACnE,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,qBAAqB;AAChD,MAAM,KAAK,qBAAqB;AAChC,QAAQ,SAAS,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC;AAC3E,QAAQ;AACR,MAAM,KAAK,oBAAoB;AAC/B,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC7C,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC;AACvD,QAAQ;AACR,QAAQ;AACR,MAAM,KAAK,mBAAmB,EAAE;AAChC,QAAQ,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC;AAC3J,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC7C,QAAQ,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;AACxG,QAAQ,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;AAC1D,QAAQ;AACR,MAAM;AACN;AACA,IAAI,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AAC1M,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACjC,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,oBAAoB,CAAC;AAC7B,IAAI,UAAU,GAAG,eAAe;AAChC,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS;AACxC,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAChD,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI,GAAG;AACP,GAAG,EAAE;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC/D,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACzD,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7B,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC7D,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;AACtD,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AAChC,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC9B,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,KAAK,qBAAqB,IAAI,IAAI,CAAC,SAAS,CAAC,qBAAqB,KAAK,mBAAmB,MAAM,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,CAAC,EAAE;AAClM,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC7D,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,IAAI,SAAS;AACjB,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACnE,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,qBAAqB;AAChD,MAAM,KAAK,qBAAqB;AAChC,QAAQ,SAAS,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC;AAC3E,QAAQ;AACR,MAAM,KAAK,oBAAoB;AAC/B,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC7C,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC;AACvD,QAAQ;AACR,QAAQ;AACR,MAAM,KAAK,mBAAmB,EAAE;AAChC,QAAQ,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,0BAA0B,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC;AAC3J,QAAQ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC7C,QAAQ,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;AACxG,QAAQ,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC;AAC1D,QAAQ;AACR,MAAM;AACN;AACA,IAAI,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACvC,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,YAAY,EAAE,CAAC;AAChL,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACjC,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE;AACrB,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACrB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACrD,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACxE,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,kCAAkC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,GAAG,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC;AACzH,IAAI,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;AACxC,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACrD,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC9B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACrD,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AACtC,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC/D,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;AACrH,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACjC,EAAE;AACF,CAAC;;AAED;AACA,IAAI,iBAAiB,GAAG,MAAM;AAC9B,EAAE,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE;AAC3D,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc;AACxC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACtF,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAC9E,EAAE;AACF,EAAE,MAAM,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;AAC9D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;AACjE,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC7C,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACpC,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;AAC1D,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnC,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE;AAC3B,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC;AACvG,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrC,EAAE;AACF,EAAE,MAAM,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE;AAC5D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC;AACtE,IAAI,MAAM,sBAAsB,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;AAC3E,IAAI,IAAI,sBAAsB,EAAE;AAChC,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC;AAC/C,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrC,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,sBAAsB,CAAC;AAC7E,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrC,EAAE;AACF,EAAE,MAAM,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAClE,IAAI,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI;AACnC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,aAAa,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa;AAC7F,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACrE,IAAI,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAClD,MAAM,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;AAC/D,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC5B,MAAM,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;AACxC,MAAM,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACtC,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ;AAC/D,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC;AAC1D,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACrC,EAAE;AACF,EAAE,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE;AAC3C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAClE,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,EAAE;AACrC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACtD,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACpC,IAAI,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI;AACnC,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,MAAM,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC;AACxD,MAAM,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACvC,IAAI;AACJ,EAAE;AACF,EAAE,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACvC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;AAC9D,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,KAAK,EAAE;AACrC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACtD,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACvD,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1B,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACvD,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE;AACtD,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE;AAClF,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACpC,IAAI,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI;AACnC,IAAI,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACxC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AACrE,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,MAAM,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC;AACxD,MAAM,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACvC,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/C,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC3D,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE;AAC3E,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACzD,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjF,IAAI,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAChF,MAAM,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC5C,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC;AACtC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC/E,IAAI,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC;AACtE,IAAI,IAAI,WAAW,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;AAC5D,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;AACnG,IAAI;AACJ,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC1H,IAAI,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,QAAQ,CAAC,OAAO,CAAC;AAClF,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;AACpD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AACvD,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;AACvB,MAAM,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACtC,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AACjE,QAAQ,SAAS,EAAE,KAAK,CAAC,SAAS;AAClC,QAAQ,aAAa,EAAE,KAAK,CAAC,aAAa;AAC1C,QAAQ,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC3B,QAAQ,YAAY,EAAE,KAAK,CAAC,YAAY;AACxC,QAAQ,aAAa,EAAE,KAAK,CAAC,aAAa;AAC1C,QAAQ,YAAY;AACpB,QAAQ,GAAG,KAAK,CAAC;AACjB,OAAO,CAAC;AACR,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC5C,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,IAAI;AACJ,EAAE;AACF,EAAE,0BAA0B,CAAC,QAAQ,EAAE,aAAa,EAAE;AACtD,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC;AACrE,IAAI,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC1C,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AAChF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AACvB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACrE,IAAI;AACJ,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;AACrD,MAAM,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE;AACzC,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC9E,MAAM;AACN,MAAM,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,EAAE;AAC3E,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC3F,MAAM;AACN,MAAM,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE;AACzD,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAC/E,MAAM;AACN,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE;AACzC,QAAQ,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACzF,MAAM;AACN,IAAI;AACJ,IAAI,QAAQ,CAAC,OAAO,GAAG,QAAQ;AAC/B,EAAE;AACF,CAAC;;AAED;AACA,IAAI,KAAK,GAAG,MAAM,MAAM,CAAC;AACzB,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC,cAAc,EAAE;AACrD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACzB,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;AAC1C,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AACjC,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,EAAE;AACzC,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACzC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AACnC,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACjD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;AACjB,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,SAAS,EAAE,IAAI,CAAC;AACtB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,iBAAiB,CAAC,aAAa,EAAE;AAC1C,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACrD,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AACjE,EAAE;AACF,EAAE,aAAa,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,iBAAiB,CAAC;AACnE,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,GAAG;AAC7C,IAAI,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE;AAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;AACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACzC,MAAM,IAAI,MAAM,GAAG,KAAK;AACxB,MAAM,IAAI,IAAI,EAAE;AAChB,QAAQ,IAAI;AACZ,UAAU,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC5D,UAAU,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;AACjE,UAAU,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,EAAE;AACvC,YAAY,MAAM,GAAG,IAAI;AACzB,UAAU;AACV,QAAQ,CAAC,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,EAAE,GAAG,CAAC;AACjE,UAAU,MAAM,GAAG,IAAI;AACvB,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;AACzD,QAAQ,MAAM,GAAG,IAAI;AACrB,MAAM;AACN,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;AACnD,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAChC,MAAM;AACN,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,WAAW,GAAG,MAAM,YAAY,SAAS,KAAK,CAAC;AACnD,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,KAAK,CAAC,IAAI,CAAC;AACf,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AAC7C,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AACnC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AACnC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACzC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC3B,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACjD,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACzC,EAAE;AACF,EAAE,aAAa,MAAM,CAAC,IAAI,EAAE;AAC5B,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,WAAW,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,MAAM;AACzH,IAAI,MAAM,cAAc,GAAG,aAAa,GAAG,MAAM,WAAW,CAAC,qBAAqB,CAAC,aAAa,CAAC,GAAG,MAAM;AAC1G,IAAI,OAAO,IAAI,YAAY,CAAC;AAC5B,MAAM,GAAG,IAAI;AACb,MAAM,aAAa;AACnB,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;AACvD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;AACjB,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,aAAa,EAAE,IAAI,CAAC,aAAa;AACvC,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB,MAAM,aAAa,EAAE,IAAI,CAAC,aAAa;AACvC,MAAM,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AAC7C,MAAM,aAAa,EAAE,IAAI,CAAC,aAAa;AACvC,MAAM,YAAY,EAAE,IAAI,CAAC;AACzB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,iBAAiB,CAAC,aAAa,EAAE;AAC1C,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,mBAAmB,CAAC;AAC3D,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1C,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,EAAE;AACF,CAAC;;AAED;AACA,IAAI,cAAc,GAAG,MAAM,cAAc,CAAC;AAC1C,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AACvB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC3B,EAAE;AACF,EAAE,aAAa,MAAM,CAAC;AACtB;AACA,IAAI,GAAG;AACP,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,KAAK;AACT;AACA,IAAI,UAAU;AACd,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,WAAW;AACf,IAAI,OAAO;AACX,IAAI,uBAAuB;AAC3B,IAAI,GAAG;AACP,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACjD,MAAM,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC;AACvD,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC;AAClC,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC;AAC1D,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC;AACrC,IAAI;AACJ,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC;AAC3D,MAAM,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC;AACtC,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC;AACnD,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;AAC9B,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC;AACvD,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC;AAClC,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;AAC3C,MAAM,IAAI,EAAE,UAAU;AACtB,MAAM,YAAY;AAClB,MAAM,SAAS;AACf,MAAM,aAAa,EAAE,CAAC,WAAW;AACjC,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,aAAa;AACnB,MAAM,KAAK;AACX,MAAM,gBAAgB;AACtB,MAAM;AACN,KAAK,CAAC;AACN,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAClC,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AACzD,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;AAC/D,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC;AACjE,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAClC,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AACnD,IAAI;AACJ,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AACnD,IAAI;AACJ,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;AACxD,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,EAAE;AAC7B,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,mBAAmB,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;AACtD,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE;AAC9B,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC;AAC3E,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC;AACpE,IAAI;AACJ,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC;AACvE,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC,EAAE;AAC1G,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAQ,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5D,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,IAAI,cAAc,CAAC;AAC9B,MAAM,GAAG,EAAE,SAAS,CAAC,IAAI;AACzB,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,CAAC;AACD,cAAc,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC;AACpD,IAAI,aAAa,GAAG,cAAc;;AAElC;AACA,IAAI,SAAS,GAAG,QAAQ;AACxB,IAAI,cAAc,GAAG,MAAM;AAC3B,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB;AACA,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE;AAC1B;AACA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE;AACxB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;AACpD,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAClF,MAAM,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtE,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,IAAI,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC5D,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AAClC,EAAE;AACF,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AACpC,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE;AACjD,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACxD,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE;AACxC,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE;AAChE,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,QAAQ,GAAG;AACjB,IAAI,IAAI,EAAE;AACV,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ;AACtG,EAAE;AACF,CAAC;;AAED;AACA,IAAI,cAAc,GAAG,MAAM;AAC3B,EAAE,WAAW,CAAC;AACd,IAAI,GAAG;AACP,IAAI,UAAU;AACd,IAAI,aAAa;AACjB,IAAI,wBAAwB;AAC5B,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,EAAE;AACL,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAC/C,MAAM,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC;AAC5B,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAClC,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC;AAC3D,IAAI;AACJ,IAAI,IAAI,wBAAwB,EAAE;AAClC,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,EAAE,wBAAwB,CAAC;AACzF,MAAM,IAAI,UAAU,IAAI,SAAS,EAAE;AACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAC7E,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;AACtC,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,UAAU,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,mBAAmB,CAAC,EAAE,SAAS,CAAC,CAAC;AACxE,QAAQ;AACR,QAAQ,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;AAC1D,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC,EAAE;AACxE,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAQ,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5D,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI;AAC7B,EAAE;AACF,CAAC;;AAED;AACA,IAAI,eAAe,GAAG,MAAM;AAC5B,EAAE,WAAW,CAAC,MAAM,EAAE;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAClF,MAAM,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACtE,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,IAAI,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC5D,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAC5C,EAAE;AACF,CAAC;;AAED;AACA,IAAI,qBAAqB,GAAG;AAC5B,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE;AACF;AACA,CAAC;AACD,IAAI,8BAA8B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACxE,IAAI,aAAa,GAAG,MAAM;AAC1B,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC;AAC9C,EAAE;AACF,EAAE,oBAAoB,CAAC,MAAM,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;AAChC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;AAC7C,MAAM,IAAI,cAAc;AACxB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE;AAC9D,QAAQ,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB;AAC5D,MAAM,CAAC,MAAM;AACb,QAAQ,cAAc,GAAG,qBAAqB;AAC9C,MAAM;AACN,MAAM,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;AAC1C,QAAQ,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC7D,UAAU,OAAO,MAAM,CAAC,KAAK,CAAC;AAC9B,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AAChC,IAAI,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE;AACjC,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC3D,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE;AACpC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnE,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,IAAI,SAAS,EAAE;AACrE,YAAY,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM;AAClC,UAAU,CAAC,MAAM;AACjB,YAAY,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/F,YAAY,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE;AAC3E,cAAc,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjD,gBAAgB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,cAAc;AACd,YAAY;AACZ,YAAY,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY;AACxC,UAAU;AACV,QAAQ,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpF,UAAU,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;AACjE,QAAQ,CAAC,MAAM;AACf,UAAU,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM;AAChC,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,CAAC;;AAED;AACA,IAAI,SAAS,GAAG,MAAM;AACtB,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,EAAE;AACF,CAAC;;AAED;AACA,IAAI,UAAU,GAAG,MAAM;AACvB,EAAE,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE;AACzC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC;AAC3C,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,YAAY,uBAAuB,GAAG,QAAQ,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC;AAClH,IAAI,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,GAAG,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzG,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1D,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC;AACrG,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AAC5E,EAAE;AACF,EAAE,MAAM,mBAAmB,CAAC;AAC5B,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,aAAa;AACjB,IAAI,UAAU;AACd,IAAI,YAAY;AAChB,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;AAC/B,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY;AAC7C,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AACjC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;AACnC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;AACnC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;AACzC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;AACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACrC,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AAC/C,IAAI,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AACrD,IAAI,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AACrD,IAAI,OAAO;AACX,IAAI,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5C,GAAG,EAAE;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;AAC9D,IAAI,IAAI,aAAa,KAAK,MAAM,EAAE;AAClC,MAAM,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;AAClF,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE;AACrE,IAAI,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC;AACzD,IAAI,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;AACrD,MAAM,GAAG;AACT,MAAM,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;AACxC,MAAM,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;AACxC,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,KAAK;AACX,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,SAAS;AACf,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,UAAU;AAChB,MAAM,aAAa;AACnB,MAAM,UAAU;AAChB,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,MAAM,gBAAgB;AACtB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;AAChD,MAAM,YAAY;AAClB,MAAM,KAAK;AACX,MAAM,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC5C,MAAM;AACN,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,CAAC,eAAe,EAAE;AAChC,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK;AAC3C,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC;AACrF,IAAI,OAAO,aAAa;AACxB,EAAE;AACF,EAAE,MAAM,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,EAAE;AAC1D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAClE,IAAI,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9F,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzB,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACtD,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5G,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACpE,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;AACxE,IAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC9B,EAAE;AACF,EAAE,MAAM,qBAAqB,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,GAAG,IAAI,EAAE;AACrE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;AAChE,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,WAAW,CAAC;AACpF,IAAI,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC;AACrE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AACxD,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzE,MAAM,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3D,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;AACjF,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/D,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;AACtF,QAAQ,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS;AACxC,QAAQ,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;AACnF,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,GAAG;AACjB,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE;AACvC,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,gBAAgB,EAAE;AACpD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAC/C,MAAM,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;AAC7D,IAAI,CAAC,MAAM;AACX,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC9D,MAAM,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,EAAE;AAC9C,QAAQ,SAAS,CAAC,KAAK,GAAG,KAAK;AAC/B,QAAQ,MAAM,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/D,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM,WAAW,CAAC,iBAAiB,CAAC;AAC/C,MAAM,GAAG,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC7D,MAAM,UAAU,EAAE,MAAM;AACxB,MAAM,OAAO,EAAE,SAAS,CAAC,IAAI;AAC7B,MAAM,KAAK,EAAE,SAAS,CAAC;AACvB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,uCAAuC,CAAC;AAChD,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,gBAAgB,GAAG;AACvB,GAAG,EAAE;AACL,IAAI,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;AAClH,IAAI,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,eAAe,EAAE,CAAC;AACpE,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC;AAChD,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,cAAc,EAAE,YAAY,CAAC;AACnF,IAAI,OAAO,cAAc;AACzB,EAAE;AACF,EAAE,MAAM,eAAe,CAAC;AACxB,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,EAAE;AACL,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC1D,IAAI,IAAI,KAAK;AACb,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,KAAK,MAAM,EAAE;AAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE;AACxF,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACjF,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AACxD,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzE,MAAM,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3D,IAAI;AACJ,IAAI,IAAI,MAAM;AACd,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;AAC5D,QAAQ,aAAa,EAAE,KAAK,CAAC,aAAa;AAC1C;AACA,QAAQ,KAAK;AACb,QAAQ,YAAY;AACpB,QAAQ,QAAQ;AAChB,QAAQ,gBAAgB;AACxB,QAAQ,YAAY;AACpB,QAAQ,GAAG;AACX,OAAO,CAAC;AACR,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/D,QAAQ,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;AAC3F,QAAQ,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;AAC9D,UAAU,aAAa,EAAE,KAAK,CAAC,aAAa;AAC5C;AACA,UAAU,KAAK;AACf,UAAU,YAAY;AACtB,UAAU,QAAQ;AAClB,UAAU,gBAAgB;AAC1B,UAAU,YAAY;AACtB,UAAU,GAAG;AACb,SAAS,CAAC;AACV,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,GAAG;AACjB,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,eAAe,EAAE,CAAC;AAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AACnC,IAAI,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,QAAQ,CAAC;AAClD,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE;AAC5D,MAAM,GAAG,KAAK;AACd;AACA;AACA,MAAM;AACN,KAAK,CAAC;AACN,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,MAAM,oBAAoB,CAAC;AAC7B,IAAI,KAAK;AACT,IAAI,aAAa;AACjB,IAAI,SAAS;AACb,IAAI,YAAY;AAChB,IAAI,SAAS;AACb,IAAI,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB;AACrE,IAAI,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,GAAG,GAAG,EAAE,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC/D,IAAI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE;AAClE,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACzD,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC;AACvD,IAAI,IAAI,CAAC,SAAS,IAAI,wBAAwB,IAAI,CAAC,aAAa,EAAE;AAClE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS;AACzC,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC;AACvC,MAAM,GAAG;AACT,MAAM,aAAa;AACnB,MAAM,SAAS;AACf,MAAM,wBAAwB;AAC9B,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,gBAAgB;AACtB,MAAM,YAAY;AAClB,MAAM;AACN,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,CAAC,eAAe,EAAE;AAChC,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;AACtC,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC;AAC3D,MAAM,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,eAAe,EAAE,CAAC;AACzF,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,EAAE;AACF,EAAE,MAAM,wBAAwB,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,EAAE;AAC3D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC;AACnE,IAAI,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC/F,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzB,MAAM,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC;AAC3C,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC1B,QAAQ,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,CAAC,KAAK,CAAC;AAC3D,QAAQ,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC;AACzC,MAAM;AACN,MAAM,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AACxC,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5G,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACpE,MAAM,MAAM,IAAI;AAChB,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;AAClE,IAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC9B,EAAE;AACF,EAAE,MAAM,sBAAsB,CAAC,GAAG,EAAE;AACpC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;AACjE,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC;AAC9E,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC;AACvE,MAAM,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9D,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC;AAC1E,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC1C,IAAI,OAAO,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;AAChG,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACtC,IAAI,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC1C,MAAM,KAAK;AACX,MAAM,eAAe,EAAE;AACvB,KAAK,CAAC;AACN,EAAE;AACF,CAAC;;AAED;AACA,IAAI,cAAc,GAAG,MAAM;AAC3B,EAAE,WAAW,CAAC,YAAY,EAAE;AAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;AAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK;AAClC,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;AAC9C,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAQ;AACR,MAAM;AACN,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnD,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;AACpC,QAAQ,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;AACzE,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM;AAC1B,QAAQ,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,aAAa,EAAE,kBAAkB,CAAC;AACzE,MAAM;AACN,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACpC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC;AACrD,QAAQ;AACR,MAAM;AACN,MAAM,IAAI;AACV,QAAQ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,qBAAqB,EAAE;AACnF,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC;AAC5D,UAAU,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS;AAChE,UAAU,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,6BAA6B;AAC5F,UAAU,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB;AAChF,UAAU,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC;AAC3H,UAAU,MAAM,kBAAkB,CAAC,IAAI,EAAE;AACzC,UAAU,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;AACvD,UAAU,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC;AACjD,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC;AACvE,QAAQ;AACR,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;AACpG,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,MAAM;AACvB,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAClD,MAAM,IAAI,CAAC,IAAI,GAAG,MAAM;AACxB,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACpC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;AACvC,MAAM;AACN,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AAC9D,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY;AACpD,UAAU,aAAa,CAAC,WAAW,CAAC;AACpC,UAAU,IAAI;AACd,YAAY,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;AACxE,YAAY,IAAI,OAAO,EAAE;AACzB,cAAc,MAAM,OAAO,GAAG;AAC9B,gBAAgB,aAAa,EAAE,OAAO,CAAC,aAAa;AACpD,gBAAgB,OAAO,EAAE,OAAO,CAAC,GAAG,GAAG;AACvC,kBAAkB,GAAG,EAAE,OAAO,CAAC;AAC/B,iBAAiB,GAAG;AACpB,eAAe;AACf,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACvC,YAAY;AACZ,UAAU,CAAC,CAAC,OAAO,GAAG,EAAE;AACxB,YAAY,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;AACpG,UAAU;AACV,QAAQ,CAAC,EAAE,GAAG,CAAC;AACf,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,SAAS,GAAG,YAAY;AACjC,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;AACpE,QAAQ,IAAI,UAAU,GAAG,IAAI;AAC7B,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACjD,UAAU,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;AACzC,YAAY,UAAU,GAAG,KAAK;AAC9B,YAAY,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AACjE,YAAY,OAAO,CAAC,KAAK,CAAC,2GAA2G,EAAE,OAAO,CAAC,aAAa,CAAC;AAC7J,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACrE,UAAU,CAAC,MAAM;AACjB,YAAY,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,OAAO,CAAC,GAAG,CAAC;AAC1E,UAAU;AACV,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC;AAC3D,QAAQ;AACR,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;AACzB,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAChE,UAAU,CAAC,MAAM;AACjB,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC/D,UAAU;AACV,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC;AAC3E,QAAQ;AACR,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;AACvB,UAAU,OAAO,CAAC,KAAK,CAAC,mEAAmE,EAAE,GAAG,CAAC;AACjG,UAAU,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE;AAC9D,QAAQ;AACR,MAAM;AACN,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;AACvD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACxD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;AAChC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,EAAE;AACF,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAClD,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AACnE,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;AAClE,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,aAAa,EAAE,OAAO,CAAC,aAAa;AAC9C,UAAU,OAAO,EAAE,OAAO,CAAC,GAAG,GAAG;AACjC,YAAY,GAAG,EAAE,OAAO,CAAC;AACzB,WAAW,GAAG;AACd,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,MAAM;AACN,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC;AACvB,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACjC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AACtE,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACzC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC/B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;AAC/B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AACnC,EAAE;AACF;AACA,EAAE,IAAI,UAAU,GAAG;AACnB,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AACpC,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE;AACjD,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;AACxB,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE;AAChE,IAAI;AACJ,EAAE;AACF;AACA,EAAE,IAAI,OAAO,GAAG;AAChB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AACtC,IAAI,IAAI,UAAU,KAAK,MAAM,EAAE;AAC/B,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,OAAO,UAAU,IAAI,CAAC;AAC1B,EAAE;AACF;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACtF,EAAE;AACF,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAChD,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,aAAa,EAAE,IAAI,CAAC,aAAa;AACvC,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,aAAa,EAAE,IAAI,CAAC,aAAa;AACvC,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,UAAU,EAAE,IAAI,CAAC;AACvB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,iBAAiB,CAAC,aAAa,EAAE;AAC1C,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC;AACpD,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,EAAE;AACF,CAAC;;AAED;AACA,IAAI,aAAa,GAAG,aAAa;AACjC,IAAI,mBAAmB,GAAG,MAAM;AAChC,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,2BAA2B,CAAC;AACxD,IAAI,IAAI,CAAC,gBAAgB,mBAAmB,IAAI,GAAG,EAAE;AACrD,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,MAAM,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACnE,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACrE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK;AAC9B,QAAQ,IAAI,EAAE;AACd,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI;AAC3B,QAAQ,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;AACvF,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,MAAM,aAAa,EAAE;AAC5F,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI;AACZ,UAAU,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACxF,UAAU,IAAI,CAAC,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC;AAC1D,UAAU;AACV,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;AACnE,YAAY;AACZ,UAAU;AACV,QAAQ,CAAC,CAAC,MAAM;AAChB,UAAU,IAAI,CAAC,QAAQ,EAAE;AACzB,UAAU,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC3D,QAAQ;AACR,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,MAAM,CAAC;AACP,MAAM,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;AACzD,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7F,MAAM,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/E,MAAM,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;AAC1D,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACtD,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK;AACnE,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,MAAM,CAAC,CAAC,CAAC;AACT,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC;AAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,IAAI;AACJ,IAAI,OAAO,EAAE,GAAG,EAAE;AAClB,EAAE;AACF,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACnC,IAAI,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjD,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACjC,EAAE;AACF,EAAE,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC7F,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,MAAM,EAAE,aAAa;AAC3B,MAAM,GAAG;AACT,MAAM;AACN,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC;AAC/C,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAC7D,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC;AACzD,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1D,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC;AACtF,MAAM;AACN,MAAM,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;AACxE,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;AAClC,MAAM,OAAO,CAAC,KAAK,EAAE;AACrB,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,0BAA0B,GAAG;AACjC,EAAE,QAAQ,EAAE,KAAK;AACjB,EAAE,OAAO,EAAE,KAAK;AAChB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,8BAA8B,EAAE;AAClC,CAAC;AACD,IAAI,kBAAkB,GAAG,QAAQ;AACjC,IAAI,mDAAmD,GAAG,EAAE;AAC5D,IAAI,oCAAoC,GAAG,CAAC;AAC5C,IAAI,oCAAoC,GAAG,EAAE;AAC7C,IAAI,wBAAwB,GAAG,cAAc,uBAAuB,CAAC;AACrE,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM;AACV,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY;AAC5C,MAAM,8BAA8B,GAAG,IAAI,CAAC,wBAAwB;AACpE,MAAM,mBAAmB,GAAG,0BAA0B;AACtD,MAAM,iBAAiB,GAAG,kBAAkB;AAC5C,MAAM,cAAc,GAAG,QAAQ;AAC/B,MAAM,cAAc,GAAG,MAAM;AAC7B,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB;AAC9D,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAClD,MAAM,uBAAuB;AAC7B,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY;AAC7C,MAAM,6BAA6B;AACnC,MAAM,oBAAoB,GAAG,IAAI;AACjC,MAAM,wBAAwB,GAAG,IAAI;AACrC,MAAM,2BAA2B,GAAG,KAAK;AACzC,MAAM,cAAc,GAAG,KAAK;AAC5B,MAAM,uBAAuB,GAAG,KAAK;AACrC,MAAM,6BAA6B,GAAG,oCAAoC;AAC1E,MAAM,0BAA0B,GAAG,MAAM;AACzC,MAAM,uBAAuB,GAAG,IAAI;AACpC,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC;AAC1D,MAAM,qBAAqB,GAAG,KAAK;AACnC,MAAM,6BAA6B,GAAG,KAAK;AAC3C,MAAM,4CAA4C,GAAG,mDAAmD;AACxG,MAAM;AACN,KAAK,GAAG,IAAI;AACZ,IAAI,KAAK,CAAC,IAAI,CAAC;AACf,IAAI,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAChD,IAAI,IAAI,CAAC,8BAA8B,GAAG,8BAA8B;AACxE,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;AAClD,IAAI,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;AAC9C,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc;AACxC,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc;AACxC,IAAI,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;AAC5D,IAAI,IAAI,CAAC,kBAAkB,GAAG,kBAAkB;AAChD,IAAI,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;AAClD,IAAI,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,IAAI,uBAAuB,IAAI,oCAAoC;AACzI,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;AACpD,IAAI,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;AAC5D,IAAI,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;AAClE,IAAI,IAAI,CAAC,cAAc,GAAG,cAAc;AACxC,IAAI,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AAC1D,IAAI,IAAI,CAAC,6BAA6B,GAAG,6BAA6B;AACtE,IAAI,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AAC1D,IAAI,IAAI,CAAC,0BAA0B,GAAG,0BAA0B;AAChE,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAC5C,IAAI,IAAI,CAAC,qBAAqB,GAAG,qBAAqB;AACtD,IAAI,IAAI,CAAC,6BAA6B,GAAG,6BAA6B;AACtE,IAAI,IAAI,CAAC,4CAA4C,GAAG,4CAA4C;AACpG,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,SAAS,GAAG,SAAS;AAChC,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,kBAAkB,EAAE;AACpG,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC;AAC1D,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,YAAY,GAAG,MAAM,aAAa,SAAS,mBAAmB,CAAC;AACnE,EAAE,WAAW,CAAC;AACd,IAAI,6BAA6B,GAAG;AACpC,GAAG,EAAE;AACL,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC;AAC7C,IAAI,IAAI,CAAC,iBAAiB,GAAG,6BAA6B;AAC1D,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,kBAAkB,EAAE;AACpD,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;AAC5C,EAAE;AACF,EAAE,OAAO,kBAAkB,GAAG;AAC9B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC1D,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACtC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACnC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS;AACjC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AAC1B,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG;AACtB,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;AACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5C,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAC7E,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,qCAAqC,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;AACjJ,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AACxD,IAAI,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvC,EAAE;AACF,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK;AACrD,UAAU,IAAI,GAAG;AACjB,UAAU,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM;AACjC,UAAU,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5E,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACtE,QAAQ,CAAC,EAAE,IAAI,CAAC;AAChB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;AAC9F,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI;AACxB,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE;AACzC,IAAI,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC;AACvE,EAAE;AACF,CAAC;;AAED;AACA,IAAI,eAAe,GAAG,MAAM;AAC5B,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC;AAChD,EAAE;AACF,EAAE,MAAM,OAAO,CAAC;AAChB,IAAI,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC;AACnD,GAAG,EAAE;AACL,IAAI,OAAO,IAAI,YAAY,CAAC,EAAE,6BAA6B,EAAE,CAAC;AAC9D,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE;AACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACnC,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC;AAC3E,EAAE;AACF,CAAC;;AAED;AACA,IAAI,2BAA2B,GAAG,GAAG;AACrC,IAAI,MAAM,GAAG,GAAG;AAChB,IAAI,WAAW,GAAG,cAAc,mBAAmB,CAAC;AACpD,EAAE,WAAW,CAAC;AACd,IAAI,iBAAiB,GAAG,kBAAkB;AAC1C,IAAI,mBAAmB,GAAG,EAAE;AAC5B,IAAI,WAAW;AACf,IAAI;AACJ,GAAG,EAAE;AACL,IAAI,KAAK,EAAE;AACX,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC;AAC5C,IAAI,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,0BAA0B,EAAE,GAAG,mBAAmB,EAAE,CAAC;AACtG,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AAC9F,IAAI,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAClD,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AAClD,QAAQ,IAAI,EAAE;AACd,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,eAAe,CAAC,CAAC;AACnG,MAAM,CAAC,CAAC;AACR,IAAI;AACJ,IAAI,IAAI,mBAAmB,CAAC,8BAA8B,IAAI,mBAAmB,CAAC,8BAA8B,GAAG,CAAC,EAAE;AACtH,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC9F,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACpE,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,MAAM,CAAC,EAAE,mBAAmB,CAAC,8BAA8B,GAAG,MAAM,CAAC;AACrE,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,EAAE;AACV,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE;AACrD,IAAI,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM;AAClD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAChD,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC;AAC1E,QAAQ,wBAAwB,EAAE;AAClC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,wBAAwB,CAAC;AAC9D,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACnE,QAAQ;AACR,MAAM;AACN,IAAI,CAAC,EAAE,2BAA2B,CAAC;AACnC,IAAI,MAAM,wBAAwB,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC;AAC7E,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,CAAC;AACvD,IAAI,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvC,EAAE;AACF,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAChC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAC5B,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACzD,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,OAAO,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrC,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC;AACrD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,MAAM,MAAM,CAAC,KAAK,EAAE;AACpB,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,cAAc,GAAG,MAAM;AAC3B,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC;AAC/C,EAAE;AACF,EAAE,MAAM,OAAO,CAAC;AAChB,IAAI,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB;AAC5D,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB;AACxD,IAAI,WAAW;AACf,IAAI;AACJ,GAAG,EAAE;AACL,IAAI,OAAO,IAAI,WAAW,CAAC;AAC3B,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AACvB,MAAM,WAAW;AACjB,MAAM;AACN,KAAK,CAAC;AACN,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACnC,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC3C,EAAE;AACF,CAAC;;AAED;AACA,IAAI,iBAAiB,GAAG,MAAM;AAC9B,EAAE,WAAW,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,SAAS,GAAG,SAAS;AAC9B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC;AAClD,EAAE;AACF,EAAE,MAAM,OAAO,CAAC;AAChB,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc;AAClD,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;AACpC,GAAG,EAAE;AACL,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAClC,IAAI,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI;AAClC,IAAI,IAAI,cAAc,KAAK,KAAK,EAAE;AAClC,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI;AACjE,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AACtF,IAAI,IAAI,KAAK;AACb,IAAI,OAAO;AACX,MAAM,QAAQ,EAAE,OAAO,MAAM,KAAK;AAClC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AACvC,QAAQ,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACzD,UAAU,KAAK,GAAG,MAAM;AACxB,UAAU,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClF,UAAU,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,MAAM,OAAO;AAC5B,MAAM,CAAC;AACP,MAAM,KAAK,EAAE,MAAM;AACnB,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACpC,QAAQ,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AACrE,QAAQ,YAAY,CAAC,IAAI,EAAE;AAC3B,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,iBAAiB,GAAG,cAAc,iBAAiB,CAAC;AACxD,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,KAAK,CAAC,EAAE,iCAAiC,EAAE,QAAQ,CAAC,4CAA4C,EAAE,CAAC;AACvG,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC;AAClD,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC;AAC/C,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC;AACnD,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAC5D,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACpD,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC;AACtD,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,CAAC,sBAAsB,CAAC;AAChE,EAAE;AACF,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE;AACtC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,MAAM,KAAK,CAAC,MAAM,EAAE;AACxB,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpC,EAAE;AACF;AACA;AACA;AACA,EAAE,aAAa,CAAC,EAAE,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA,EAAE,gBAAgB,CAAC,EAAE,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;AAC7C,EAAE;AACF;AACA;AACA;AACA,EAAE,eAAe,CAAC,EAAE,EAAE;AACtB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5C,EAAE;AACF;AACA;AACA;AACA,EAAE,kBAAkB,CAAC,EAAE,EAAE;AACzB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;AAC/C,EAAE;AACF;AACA;AACA;AACA,EAAE,mBAAmB,CAAC,EAAE,EAAE;AAC1B,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;AAChD,EAAE;AACF;AACA;AACA;AACA,EAAE,sBAAsB,CAAC,EAAE,EAAE;AAC7B,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;AACnD,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,sBAAsB,CAAC,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,EAAE,EAAE;AACtB,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5C,EAAE;AACF;AACA;AACA;AACA,EAAE,kBAAkB,CAAC,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;AACxC,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,kBAAkB,GAAG;AAC7B,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACpC,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,gBAAgB,CAAC,EAAE,EAAE;AACvB,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;AAC7C,EAAE;AACF;AACA;AACA;AACA,EAAE,mBAAmB,CAAC,EAAE,EAAE;AAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,mBAAmB,GAAG;AAC9B,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AACrC,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,qBAAqB,CAAC,EAAE,EAAE;AAC5B,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;AAClD,EAAE;AACF;AACA;AACA;AACA,EAAE,wBAAwB,CAAC,EAAE,EAAE;AAC/B,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,wBAAwB,GAAG;AACnC,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAC1C,EAAE;AACF,CAAC;;AAED;AACA,IAAI,kBAAkB,GAAG,MAAM;AAC/B,EAAE,WAAW,CAAC,YAAY,EAAE;AAC5B,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY;AACpC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC;AACnD,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3B,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACtD,IAAI,IAAI,CAAC,cAAc,GAAG,YAAY;AACtC,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAC3D,MAAM,IAAI;AACV,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAC9C,QAAQ,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC;AACxD,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,IAAI,GAAG,YAAY,YAAY,EAAE;AACzC,UAAU,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE,aAAa,CAAC;AAC7E,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,UAAU;AACV,QAAQ;AACR,QAAQ,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC;AACtD,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC;AAClE,MAAM;AACN,IAAI,CAAC;AACL,EAAE;AACF,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAChD,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI;AAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACzC,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC;AAC3C,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;AACzD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC7E,MAAM,IAAI,CAAC,UAAU,GAAG,KAAK;AAC7B,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,YAAY,GAAG,MAAM;AACzB,EAAE,WAAW,CAAC,IAAI,EAAE;AACpB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACjC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC3C,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC3B,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;AAC1B,EAAE;AACF,CAAC;;AAED;AACA,IAAI,WAAW,GAAG,MAAM;AACxB,EAAE,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE;AAC5E,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC;AAC5C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAwB,CAAC,QAAQ,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC;AAC3C,IAAI,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,IAAI,IAAI,GAAG,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClH,IAAI,IAAI,CAAC,eAAe,GAAG,cAAc,IAAI,IAAI,GAAG,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtG,IAAI,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,IAAI,GAAG,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1G,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvD,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC;AAC3D,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AAC5C,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAC7B,IAAI;AACJ,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI;AAC/B,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AACtC,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC;AACrD,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,OAAO,IAAI,CAAC,OAAO;AACvB,EAAE;AACF;AACA;AACA;AACA,EAAE,IAAI,eAAe,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe;AACvC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE;AACpC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAClD,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACvC,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AACjC,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAC/C,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAC7C,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,GAAG;AACrB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAC7C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,cAAc,CAAC,IAAI,GAAG,EAAE,EAAE;AAClC,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,MAAM;AACV,MAAM,cAAc;AACpB,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,uBAAuB,EAAE;AACjF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;AAC5E,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC;AAC5B,MAAM,YAAY,EAAE,MAAM;AAC1B,MAAM,OAAO;AACb,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,sBAAsB,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;AACjE,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC3C,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1C,MAAM,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAClE,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,8BAA8B,CAAC;AACvC,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,YAAY,GAAG;AACnB,GAAG,EAAE;AACL,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC;AACxE,IAAI,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC;AACtF,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM,YAAY;AAClB,MAAM,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC;AACtC,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACxC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;AACtD,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1C,MAAM,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAClE,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,WAAW,CAAC,IAAI,GAAG,EAAE,EAAE;AAC/B,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACtD,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,uBAAuB,EAAE;AACjF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM;AACV,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AACvB,MAAM,WAAW;AACjB,MAAM,iBAAiB;AACvB,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB;AAChD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAClE,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AACjI,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;AACpC,MAAM,YAAY,EAAE,MAAM;AAC1B,MAAM,YAAY,EAAE,GAAG;AACvB,MAAM,OAAO,EAAE,OAAO;AACtB,MAAM,OAAO;AACb,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,CAAC;AACd,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC5C,QAAQ,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACpE,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAClC,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,mBAAmB,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AAC1E,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;AAC9D,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC1D,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;AAChC,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AACvD,IAAI,MAAM;AACV,MAAM,6BAA6B;AACnC,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACrC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE;AAC/E,MAAM,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAC1C,MAAM,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AAC1C,MAAM,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC;AACzC,QAAQ,KAAK;AACb,QAAQ,YAAY,EAAE,WAAW,CAAC,YAAY;AAC9C,QAAQ,QAAQ,EAAE,WAAW,CAAC,QAAQ;AACtC,QAAQ,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;AACtD,QAAQ,gBAAgB,EAAE;AAC1B,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,uBAAuB,EAAE;AACjF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9D,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,SAAS;AACjB,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE;AACxD,MAAM,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACvE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;AAClC,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,6BAA6B,EAAE,CAAC;AACzF,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;AAC9B,MAAM,YAAY,EAAE,MAAM;AAC1B,MAAM,YAAY,EAAE,GAAG;AACvB,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM;AAC/G,MAAM,OAAO;AACb,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;AACzB,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AACzD,QAAQ,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACpE,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAClC,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE;AAC/B,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;AACxD,MAAM,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,6BAA6B;AACnE,MAAM,GAAG;AACT,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzD,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,oBAAoB,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC/D,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,cAAc,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnD,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACrE,IAAI,QAAQ,KAAK,CAAC,YAAY;AAC9B,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;AACrD,MAAM,KAAK,MAAM;AACjB,QAAQ,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;AAC3C,QAAQ;AACR,MAAM,KAAK,MAAM;AACjB,QAAQ,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAC5C,QAAQ;AACR,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;AACzD;AACA,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,eAAe,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AACtE,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC;AACtE,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,QAAQ,KAAK,CAAC,YAAY;AAC9B,MAAM,KAAK,MAAM;AACjB,QAAQ,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;AACtD,MAAM,KAAK,MAAM;AACjB,QAAQ,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC;AACtD,QAAQ;AACR,MAAM,KAAK,MAAM;AACjB,QAAQ,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;AAC7C,QAAQ;AACR,MAAM;AACN,QAAQ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;AACzD;AACA,IAAI,OAAO,MAAM;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,kBAAkB,CAAC,IAAI,GAAG,EAAE,EAAE;AACtC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;AAC7D,IAAI,MAAM;AACV,MAAM,6BAA6B;AACnC,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACjD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACnE,IAAI;AACJ,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACvC,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,6BAA6B,EAAE,CAAC;AACzF,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;AAChD,MAAM,YAAY,EAAE,MAAM;AAC1B;AACA,MAAM,YAAY,EAAE,GAAG;AACvB,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,GAAG,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM;AAC/G,MAAM,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,0BAA0B;AAC7D,MAAM,KAAK,EAAE,QAAQ;AACrB,MAAM,YAAY,EAAE,IAAI;AACxB,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,CAAC;AACd,IAAI,IAAI;AACR,MAAM,MAAM,YAAY,GAAG,EAAE;AAC7B,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC;AACpG,MAAM,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAC1C,MAAM,IAAI,cAAc,CAAC,aAAa,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE;AACtE,QAAQ,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AACvE,QAAQ,OAAO;AACf,UAAU,aAAa,EAAE,cAAc,CAAC,aAAa;AACrD,UAAU,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC;AACtC,SAAS;AACT,MAAM;AACN,MAAM,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC;AACrD,MAAM,OAAO,IAAI;AACjB,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,IAAI,GAAG,YAAY,aAAa,EAAE;AACjF,QAAQ,QAAQ,GAAG,CAAC,KAAK;AACzB,UAAU,KAAK,gBAAgB;AAC/B,UAAU,KAAK,kBAAkB;AACjC,UAAU,KAAK,sBAAsB;AACrC,UAAU,KAAK,4BAA4B;AAC3C,YAAY,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC;AACtD,YAAY,OAAO;AACnB,cAAc,aAAa,EAAE,GAAG,CAAC;AACjC,aAAa;AACb;AACA,MAAM;AACN,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;AACzC,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AAC7D,IAAI,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC;AAC5D,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AACvD,IAAI,IAAI;AACR,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC;AACxE,MAAM,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,MAAM,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC;AACnC,QAAQ,GAAG,EAAE,aAAa,CAAC,GAAG;AAC9B,QAAQ,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE;AACrC,QAAQ,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa;AACxD,QAAQ,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpC,OAAO,CAAC;AACR,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC;AAChF,MAAM,MAAM,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,IAAI,MAAM,YAAY,GAAG,EAAE;AAC3B,IAAI,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,EAAE,YAAY,CAAC;AACtF,IAAI,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACxC,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC;AACjE,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,UAAU,CAAC,cAAc,EAAE,SAAS,EAAE;AAC9C,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACrD,IAAI,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC;AACzC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1C,QAAQ,OAAO,CAAC,KAAK,CAAC,yEAAyE,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAClH,QAAQ,MAAM,IAAI,aAAa,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAC/E,MAAM;AACN,MAAM,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC;AACrE,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AAChC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,IAAI,OAAO,IAAI;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,eAAe,CAAC,IAAI,GAAG,EAAE,EAAE;AACnC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC1D,IAAI,MAAM;AACV,MAAM,cAAc;AACpB,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;AAC5E,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC;AAC7B,MAAM,YAAY,EAAE,MAAM;AAC1B,MAAM,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,wBAAwB;AACtE,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,CAAC;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,uBAAuB,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC5D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAClE,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAChD,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,IAAI,OAAO,QAAQ;AACnB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE;AAChC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;AACvD,IAAI,MAAM;AACV,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AACvB,MAAM,WAAW;AACjB,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,8BAA8B;AAC5D,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAC9G,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC;AACxB,MAAM,YAAY,EAAE,MAAM;AAC1B,MAAM,wBAAwB,EAAE,GAAG;AACnC;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE;AACtC,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,CAAC;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,oBAAoB,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AAC3E,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC/D,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC1D,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;AAC9D,IAAI,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC;AAClD,EAAE;AACF,EAAE,MAAM,aAAa,CAAC,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE;AACzC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;AACxD,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACzC,MAAM,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC;AACvD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAC/C,QAAQ,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,MAAM;AACN,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;AAClE,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC;AACjE,QAAQ,IAAI,CAAC,aAAa,GAAG,QAAQ;AACrC,MAAM;AACN,MAAM,MAAM,IAAI,CAAC,UAAU,EAAE;AAC7B,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC;AAC7D,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC1E,MAAM,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAC1C,MAAM,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC;AACnC,QAAQ,GAAG,EAAE,cAAc,CAAC,GAAG;AAC/B,QAAQ,KAAK,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AACnE,QAAQ,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpC,OAAO,CAAC;AACR,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC;AAChF,MAAM,MAAM,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM,GAAG;AACf,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE;AACzB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;AACtD,IAAI,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC;AAC1E,IAAI,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC;AACzC,IAAI,OAAO,eAAe;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,aAAa,CAAC,IAAI,GAAG,EAAE,EAAE;AACjC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;AACxD,IAAI,MAAM;AACV,MAAM,6BAA6B;AACnC,MAAM,GAAG;AACT,KAAK,GAAG,IAAI;AACZ,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,6BAA6B,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,GAAG,MAAM;AAC7I,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,8BAA8B;AAC5D,IAAI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,6BAA6B,EAAE,CAAC;AACzF,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC;AACxB,MAAM,YAAY,EAAE,MAAM;AAC1B,MAAM,wBAAwB,EAAE,GAAG;AACnC,MAAM,aAAa;AACnB,MAAM,GAAG;AACT,KAAK,EAAE,MAAM,CAAC;AACd,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,qBAAqB,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1D,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;AAChE,IAAI,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,EAAE;AACF,EAAE,MAAM,YAAY,CAAC,KAAK,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE;AACvC,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AACtE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;AAC1D,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC9B,MAAM,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC;AAC3D,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;AACrC,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC;AAClB,QAAQ;AACR,OAAO;AACP,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAClD,MAAM,IAAI,IAAI,KAAK,cAAc,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACzB,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC9B,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;AAChC,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAC3C,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACzC,EAAE;AACF;AACA;AACA;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;AACnC,EAAE;AACF,EAAE,IAAI,aAAa,GAAG;AACtB,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACvE,EAAE;AACF,EAAE,MAAM,SAAS,GAAG;AACpB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AACpD,IAAI,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/E,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC;AAChD,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAClD,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC1C,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,SAAS,CAAC,IAAI,EAAE;AACxB,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;AACpD,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE;AAClD,MAAM,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;AAC1E,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;AACzC,MAAM,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAC9D,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC9B,QAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtE,MAAM;AACN,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;AACxC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;AAChD,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7I,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,OAAO,MAAM,WAAW,CAAC,iBAAiB,CAAC;AACjD,QAAQ,GAAG;AACX,QAAQ,WAAW,EAAE,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY;AAC9D,QAAQ,UAAU;AAClB,QAAQ,OAAO,EAAE,SAAS,CAAC,IAAI;AAC/B,QAAQ;AACR,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,MAAM,eAAe,CAAC,YAAY,EAAE;AACtC,IAAI,IAAI,SAAS,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzE,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,gBAAgB,EAAE;AAC3D,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC;AACzC,MAAM,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;AACtE,IAAI;AACJ,IAAI,OAAO,MAAM,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;AAC5D,EAAE;AACF,CAAC;;AC1+GD;AAEA,IAAI,WAAW,GAAGD,MAAK,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,WAAW,CAAC,WAAW,GAAG,aAAa;;AAMvC;AACA,IAAI,gBAAgB,GAAG;AACvB,EAAE,SAAS,EAAE,IAAI;AACjB,EAAE,eAAe,EAAE;AACnB,CAAC;;AAED;AACA,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;AACjC,EAAE,QAAQ,MAAM,CAAC,IAAI;AACrB,IAAI,KAAK,aAAa;AACtB,IAAI,KAAK,aAAa;AACtB,MAAM,OAAO;AACb,QAAQ,GAAG,KAAK;AAChB,QAAQ,IAAI,EAAE,MAAM,CAAC,IAAI;AACzB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,eAAe,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK;AACnE,QAAQ,KAAK,EAAE;AACf,OAAO;AACP,IAAI,KAAK,iBAAiB;AAC1B,IAAI,KAAK,eAAe;AACxB,MAAM,OAAO;AACb,QAAQ,GAAG,KAAK;AAChB,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,eAAe,EAAE;AACzB,OAAO;AACP,IAAI,KAAK,gBAAgB;AACzB,MAAM,OAAO;AACb,QAAQ,GAAG,KAAK;AAChB,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,eAAe,EAAE,MAAM,CAAC;AAChC,OAAO;AACP,IAAI,KAAK,iBAAiB;AAC1B,MAAM,OAAO;AACb,QAAQ,GAAG,KAAK;AAChB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,eAAe,EAAE;AACzB,OAAO;AACP,IAAI,KAAK,OAAO,EAAE;AAClB,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAChC,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACjE,MAAM,OAAO;AACb,QAAQ,GAAG,KAAK;AAChB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,IAAI,SAAS;AACb,MAAM,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,KAAK,GAAG;AACpB,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI;AAC7B,QAAQ,OAAO,EAAE,UAAU,CAAC,OAAO;AACnC,QAAQ,UAAU;AAClB,QAAQ,KAAK,EAAE,UAAU,CAAC,KAAK;AAC/B,QAAQ,MAAM,EAAE;AAChB,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACjE,MAAM,OAAO;AACb,QAAQ,GAAG,KAAK;AAChB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ;AACR,OAAO;AACP,IAAI;AACJ;AACA,CAAC;;AAED;AACA,IAAI,aAAa,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK;AACpD,EAAE,IAAI,YAAY,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzD,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC5F,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,YAAY,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrE,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC5F,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,OAAO,KAAK;AACd,CAAC;AACD,IAAI,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AACtE,IAAI,YAAY,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;AACzE,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;AAC7E,SAAS,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE;AAChD,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACrD,IAAI,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,IAAI,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;AACjE,IAAI,UAAU,EAAE;AAChB,GAAG;AACH;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE;AACnD,EAAE,OAAO,CAAC,KAAK,KAAK;AACpB,IAAI,OAAO;AACX,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC;AAC/C,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;AAC/C,EAAE,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC9C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;AACpC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,OAAO,KAAK;AAClB,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,EAAE,EAAE;AACb;;AAEA;AACA,IAAI,sBAAsB,GAAG;AAC7B,EAAE,iBAAiB;AACnB,EAAE,oBAAoB;AACtB,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE;AACF,CAAC;AACD,IAAI,aAAa,GAAG;AACpB,EAAE,aAAa;AACf,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,gCAAgC;AAClC,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE;AACF,CAAC;AACD,IAAI,sBAAsB,GAAG,CAAC,MAAM,KAAK,MAAM;AAC/C,EAAE,MAAM,IAAI,KAAK;AACjB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,yJAAyJ;AACnL,GAAG;AACH,CAAC;AACD,IAAI,eAAe,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,WAAW;AACxE,IAAI,YAAY,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,MAAM;AACR,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,kBAAkB;AACtB,IAAI,oBAAoB;AACxB,IAAI,iBAAiB;AACrB,IAAI,YAAY;AAChB,IAAI,WAAW,EAAE,eAAe,GAAG,IAAI;AACvC,IAAI,GAAG;AACP,GAAG,GAAG,KAAK;AACX,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;AAC9C,IAAI,OAAO,eAAe,IAAI,IAAI,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,eAAe,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,EAAE;AACrJ,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACxE,EAAE,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO;AAC3C,IAAI,MAAM,MAAM,CAAC,MAAM;AACvB,MAAM;AACN,QAAQ,QAAQ,EAAE,WAAW,CAAC,QAAQ;AACtC,QAAQ,MAAM,EAAE,WAAW,CAAC;AAC5B,OAAO;AACP,MAAM,MAAM,CAAC,WAAW;AACxB,QAAQ,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC5C,UAAU,IAAI,EAAE,EAAE,EAAE;AACpB,UAAU,OAAO;AACjB,YAAY,GAAG;AACf,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,sBAAsB,CAAC,GAAG;AAC5H,WAAW;AACX,QAAQ,CAAC;AACT,OAAO;AACP,MAAM,MAAM,CAAC,WAAW;AACxB,QAAQ,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACnC,UAAU,GAAG;AACb,UAAU,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,KAAK;AAC7C,YAAY,QAAQ,CAAC;AACrB,cAAc,IAAI,EAAE,gBAAgB;AACpC,cAAc,MAAM,EAAE;AACtB,aAAa,CAAC;AACd,YAAY,IAAI;AAChB,cAAc,OAAO,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,CAAC,OAAO,KAAK,EAAE;AAC5B,cAAc,QAAQ,CAAC;AACvB,gBAAgB,IAAI,EAAE,OAAO;AAC7B,gBAAgB,KAAK,EAAE;AACvB,kBAAkB,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC,8BAA8B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACxF,kBAAkB,MAAM,EAAE,GAAG;AAC7B,kBAAkB;AAClB;AACA,eAAe,CAAC;AAChB,cAAc,OAAO,IAAI;AACzB,YAAY,CAAC,SAAS;AACtB,cAAc,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AACnD,YAAY;AACZ,UAAU,CAAC,GAAG,sBAAsB,CAAC,GAAG;AACxC,SAAS;AACT;AACA,KAAK;AACL,IAAI,CAAC,WAAW;AAChB,GAAG;AACH,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5C,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM;AACzB,IAAI,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,OAAO,EAAE;AAC/C,MAAM;AACN,IAAI;AACJ,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI;AAChC,IAAI,KAAK,CAAC,YAAY;AACtB,MAAM,IAAI;AACV,QAAQ,IAAI,IAAI,GAAG,IAAI;AACvB,QAAQ,IAAI,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE;AACpD,UAAU,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE;AACnD,UAAU,IAAI,gBAAgB,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC;AAC5D,QAAQ;AACR,QAAQ,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI;AACzD,QAAQ,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC/C,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,QAAQ,CAAC;AACjB,UAAU,IAAI,EAAE,OAAO;AACvB,UAAU,KAAK,EAAE,WAAW,CAAC,KAAK;AAClC,SAAS,CAAC;AACV,MAAM;AACN,MAAM,IAAI;AACV,QAAQ,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;AAChF,UAAU,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,eAAe,EAAE;AAC1D,UAAU,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC,IAAI,CAAC;AAC9D,QAAQ;AACR,MAAM,CAAC,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,QAAQ,CAAC;AACjB,UAAU,IAAI,EAAE,OAAO;AACvB,UAAU,KAAK,EAAE,YAAY,CAAC,KAAK;AACnC,SAAS,CAAC;AACV,MAAM;AACN,IAAI,CAAC,GAAG;AACR,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;AAClG,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM;AACzB,IAAI,IAAI,CAAC,WAAW,EAAE,OAAO,MAAM;AACnC,IAAI,MAAM,gBAAgB,GAAG,CAAC,IAAI,KAAK;AACvC,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7C,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC;AACtD,IAAI,MAAM,kBAAkB,GAAG,MAAM;AACrC,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC;AAC1D,IAAI,MAAM,mBAAmB,GAAG,MAAM;AACtC,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AAC3C,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;AAC5D,IAAI,MAAM,sBAAsB,GAAG,CAAC,KAAK,KAAK;AAC9C,MAAM,QAAQ,CAAC;AACf,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACrC,OAAO,CAAC;AACR,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;AAClE,IAAI,OAAO,MAAM;AACjB,MAAM,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAC3D,MAAM,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;AAC/D,MAAM,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;AACjE,MAAM,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;AACvE,IAAI,CAAC;AACL,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AACnB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY;AAEpD,IAAI,MAAM,WAAW,CAAC,UAAU,EAAE;AAClC,IAAI,IAAI,YAAY,EAAE,MAAM,YAAY,EAAE;AAC1C,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACjC,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;AAC5C,IAAI,OAAO;AACX,MAAM,GAAG,KAAK;AACd,MAAM,GAAG,kBAAkB;AAC3B,MAAM;AACN,KAAK;AACL,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC7C,EAAE,uBAAuB,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC;AACtG,CAAC;AAID,IAAI,OAAO,GAAG,MAAM;AACpB,EAAE,MAAM,OAAO,GAAGE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;AAChD,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI,CAAC,oHAAoH,CAAC;AACtI,EAAE;AACF,EAAE,OAAO,OAAO;AAChB,CAAC;;AC1RD,MAAM,aAAa,GAAG,aAAa;AACnC,MAAM,sBAAsB,GAAG,MAAM;AACrC,EAAE,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM;AAClI,CAAC;AACD,SAAS,QAAQ,GAAG;AACpB,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAChD;AACA,SAAS,YAAY,CAAC,aAAa,EAAE;AACrC,EAAE,IAAI;AACN,IAAI,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,EAAE,aAAa,GAAG,UAAU,CAAC,OAAO;AAC/C,IAAI,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK;AACvC,IAAI,eAAe,EAAE,qBAAqB;AAC1C,IAAI,cAAc,EAAE,oBAAoB;AACxC,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,cAAc,GAAG,MAAM;AAC3B,IAAI,GAAG;AACP,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE;AAC1B,EAAE,cAAc,GAAG,sBAAsB,EAAE,GAAG,cAAc,GAAG,MAAM;AACrE,EAAE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACxC,EAAE,MAAM,iBAAiB,GAAG,EAAE;AAC9B,EAAE,eAAe,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE;AACrD,IAAI,MAAM;AACV,MAAM,OAAO,EAAE,YAAY;AAC3B,MAAM,KAAK,GAAG,SAAS;AACvB,MAAM,OAAO,GAAG,aAAa;AAC7B,MAAM,OAAO;AACb,MAAM,MAAM,GAAG,EAAE;AACjB,MAAM,OAAO,GAAG,MAAM;AACtB,MAAM,eAAe,EAAE,sBAAsB;AAC7C,MAAM,cAAc,GAAG,oBAAoB,IAAI,qBAAqB;AACpE,MAAM,IAAI;AACV,MAAM,UAAU,EAAE,kBAAkB,GAAG,EAAE;AACzC,MAAM,GAAG;AACT,KAAK,GAAG,YAAY,IAAI,EAAE;AAC1B,IAAI,IAAI,YAAY,GAAG,OAAO;AAC9B,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,OAAO;AACjE,IAAI;AACJ,IAAI,IAAI,eAAe,GAAG,OAAO,qBAAqB,KAAK,UAAU,GAAG,qBAAqB,GAAG,qBAAqB,CAAC,qBAAqB,CAAC;AAC5I,IAAI,IAAI,sBAAsB,EAAE;AAChC,MAAM,eAAe,GAAG,OAAO,sBAAsB,KAAK,UAAU,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AACtH,QAAQ,GAAG,OAAO,qBAAqB,KAAK,QAAQ,GAAG,qBAAqB,GAAG,EAAE;AACjF,QAAQ,GAAG;AACX,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,MAAM,cAAc,GAAG,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc;AACpE,MAAM,IAAI;AACV;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM;AACtD,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,YAAY;AACrC;AACA,MAAM,cAAc,KAAK,MAAM;AAC/B,MAAM,cAAc,YAAY,QAAQ,GAAG,EAAE,GAAG;AAChD,QAAQ,cAAc,EAAE;AACxB,OAAO;AACP,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,MAAM,CAAC;AACb,KAAK;AACL,IAAI,MAAM,gBAAgB,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC;AAC1E,IAAI,MAAM,WAAW,GAAG;AACxB,MAAM,QAAQ,EAAE,QAAQ;AACxB,MAAM,GAAG,WAAW;AACpB,MAAM,GAAG,IAAI;AACb,MAAM,IAAI,EAAE,cAAc;AAC1B,MAAM,OAAO,EAAE;AACf,KAAK;AACL,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO;AAC7B,MAAM,cAAc,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACpF,MAAM;AACN,KAAK;AACL,IAAI,IAAI,QAAQ;AAChB,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,MAAM,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE;AAC7B,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACjC,MAAM,EAAE,GAAG,QAAQ,EAAE;AACrB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,QAAQ,OAAO,EAAE,YAAY;AAC7B,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,QAAQ,eAAe;AACvB,QAAQ;AACR,OAAO,CAAC;AACR,MAAM,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACxC,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU,EAAE;AAC7E,UAAU,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC;AAC3C,YAAY,OAAO;AACnB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,OAAO;AACnB,YAAY;AACZ,WAAW,CAAC;AACZ,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,IAAI,MAAM,YAAY,OAAO,EAAE;AAC3C,cAAc,OAAO,GAAG,MAAM;AAC9B,YAAY,CAAC,MAAM,IAAI,MAAM,YAAY,QAAQ,EAAE;AACnD,cAAc,QAAQ,GAAG,MAAM;AAC/B,cAAc;AACd,YAAY,CAAC,MAAM;AACnB,cAAc,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC;AAC9G,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,IAAI;AACV,QAAQ,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC;AACvD,MAAM,CAAC,CAAC,OAAO,MAAM,EAAE;AACvB,QAAQ,IAAI,oBAAoB,GAAG,MAAM;AACzC,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACrC,UAAU,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjE,YAAY,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE;AAC/E,cAAc,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;AAC7C,gBAAgB,OAAO;AACvB,gBAAgB,KAAK,EAAE,oBAAoB;AAC3C,gBAAgB,UAAU;AAC1B,gBAAgB,MAAM;AACtB,gBAAgB,OAAO;AACvB,gBAAgB;AAChB,eAAe,CAAC;AAChB,cAAc,IAAI,MAAM,EAAE;AAC1B,gBAAgB,IAAI,MAAM,YAAY,QAAQ,EAAE;AAChD,kBAAkB,oBAAoB,GAAG,MAAM;AAC/C,kBAAkB,QAAQ,GAAG,MAAM;AACnC,kBAAkB;AAClB,gBAAgB;AAChB,gBAAgB,IAAI,MAAM,YAAY,KAAK,EAAE;AAC7C,kBAAkB,oBAAoB,GAAG,MAAM;AAC/C,kBAAkB;AAClB,gBAAgB;AAChB,gBAAgB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;AAC3F,cAAc;AACd,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,oBAAoB,EAAE;AAClC,UAAU,MAAM,oBAAoB;AACpC,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE;AACnC,QAAQ,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/D,UAAU,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACvC,UAAU,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,EAAE;AAChF,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC;AAC9C,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,UAAU;AACxB,cAAc,MAAM;AACpB,cAAc,OAAO;AACrB,cAAc;AACd,aAAa,CAAC;AACd,YAAY,IAAI,MAAM,EAAE;AACxB,cAAc,IAAI,EAAE,MAAM,YAAY,QAAQ,CAAC,EAAE;AACjD,gBAAgB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC;AACrG,cAAc;AACd,cAAc,QAAQ,GAAG,MAAM;AAC/B,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE;AAChH,MAAM,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;AACnF,IAAI;AACJ,IAAI,IAAI,QAAQ,CAAC,EAAE,EAAE;AACrB,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;AAChC,QAAQ,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;AAChD,MAAM;AACN,MAAM,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC1D,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC,CAAC,MAAM;AACZ,IAAI;AACJ,IAAI,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC9B,EAAE;AACF,EAAE,OAAO;AACT,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC/B,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;AACtE,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvD,IAAI,CAAC;AACL;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACpB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxD,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AACtB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC1D,IAAI,CAAC;AACL;AACA,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AACvB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC3D,IAAI,CAAC;AACL;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;AACpB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxD,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACrB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;AACrB,MAAM,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,GAAG,UAAU,EAAE;AACvB,MAAM,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAClC,QAAQ,IAAI,CAAC,CAAC,EAAE;AAChB,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,EAAE,WAAW,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE;AACjG,UAAU,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC;AACjH,QAAQ;AACR,QAAQ,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,MAAM;AACN,IAAI,CAAC;AACL;AACA,IAAI,KAAK,CAAC,GAAG,UAAU,EAAE;AACzB,MAAM,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAClC,QAAQ,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,KAAK,EAAE,EAAE;AACtB,UAAU,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ;AACR,MAAM;AACN,IAAI;AACJ,GAAG;AACH;AAuDA,SAAS,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAC1C,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACjC,IAAI,MAAM,IAAI,KAAK;AACnB,MAAM;AACN,KAAK;AACL,EAAE;AACF,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzF;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACpD,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3C,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,MAAM,EAAE,GAAG;AACf,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,MAAM,EAAE;AACZ,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AACzB,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AACnE,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,IAAI,QAAQ,OAAO,CAAC,KAAK;AACzB,MAAM,KAAK,MAAM,EAAE;AACnB,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClC,MAAM;AACN,MAAM,KAAK,OAAO,EAAE;AACpB,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3B,MAAM;AACN,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACnC,MAAM;AACN,MAAM,SAAS;AACf,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN;AACA,EAAE;AACF,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1E,IAAI,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACtE,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK;AAC9F;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;AACnD,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC7B,IAAI,OAAO,EAAE;AACb,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AAClG,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;AAClH,IAAI,QAAQ,OAAO,CAAC,KAAK;AACzB,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,KAAK,OAAO,EAAE;AACpB,QAAQ,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1B,MAAM;AACN,MAAM,KAAK,QAAQ,EAAE;AACrB,QAAQ,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,MAAM;AACN;AACA;AACA,MAAM,SAAS;AACf,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,MAAM;AACN;AACA,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG;AAC/E,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACzB,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE;AACjE,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1H;AACA,SAAS,qBAAqB,CAAC,OAAO,EAAE;AACxC,EAAE,OAAO,SAAS,eAAe,CAAC,WAAW,EAAE;AAC/C,IAAI,MAAM,MAAM,GAAG,EAAE;AACrB,IAAI,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACxD,MAAM,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AACtC,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AAChD,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,YAAY;AACZ,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7C,cAAc,KAAK,EAAE,MAAM;AAC3B,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,GAAG,OAAO,EAAE,KAAK;AAC/B,cAAc,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI;AACvD,aAAa;AACb,WAAW;AACX,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9C,cAAc,KAAK,EAAE,YAAY;AACjC,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,GAAG,OAAO,EAAE,MAAM;AAChC,cAAc,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI;AACvD,aAAa;AACb,WAAW;AACX,UAAU;AACV,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAClE,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,EAAE,CAAC;AACH;AACA,SAAS,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE;AACrD,EAAE,IAAI,OAAO,GAAG,QAAQ;AACxB,EAAE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE;AAC3D,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,OAAO,GAAG,KAAK;AACvB,IAAI,IAAI,KAAK,GAAG,QAAQ;AACxB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,MAAM,OAAO,GAAG,IAAI;AACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACrC,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AACjF,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACrH,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;AACA,SAAS,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9C,EAAE,IAAI,IAAI,YAAY,QAAQ,EAAE;AAChC,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,OAAO,EAAE;AACf,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,YAAY,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC;AACzK,IAAI,IAAI,WAAW,KAAK,mCAAmC,EAAE;AAC7D,MAAM,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACjD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7B;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC3C,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAChD,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;AAC5B,IAAI,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACnE,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAClE,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9B,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AAChC,EAAE;AACF,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5B,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB;AACA,SAAS,YAAY,CAAC,GAAG,UAAU,EAAE;AACrC,EAAE,MAAM,YAAY,GAAG,IAAI,OAAO,EAAE;AACpC,EAAE,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;AAC9B,IAAI,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACrC,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,CAAC,YAAY,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,IAAI,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE;AACnC,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACnC,QAAQ,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE;AAC5B,UAAU,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AACpC,QAAQ;AACR,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE;AAC/B,QAAQ,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,YAAY;AACrB;AACA,SAAS,mBAAmB,CAAC,GAAG,EAAE;AAClC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzB,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,EAAE;AACF,EAAE,OAAO,GAAG;AACZ;;ACzeM,SAAU,iBAAiB,CAAC,SAA2B,EAAA;IAC3D,OAAO;AACL;;AAEG;QACH,KAAK,GAAA;AACH,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,CAAC;AAED;;AAEG;AACH,QAAA,QAAQ,CAAC,MAAuB,EAAA;AAC9B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;AAC7B,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,WAAW,CAAC,EAAU,EAAA;AACpB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE;AAClC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,UAAU,CAAC,IAAoB,EAAA;AAC7B,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC9B,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,UAAU,CAAC,EAAU,EAAE,IAAmB,EAAA;AACxC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE;AACpC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;gBACxB,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,UAAU,CAAC,EAAU,EAAA;AACnB,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,aAAa,CAAC,EAAU,EAAA;AACtB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,mBAAmB,CAAC,EAAU,EAAA;AAC5B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0BAA0B,EAAE;AAC/C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,mBAAmB,CAAC,EAAU,EAAA;AAC5B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0BAA0B,EAAE;AAC/C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACxC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACvGM,SAAU,wBAAwB,CAAC,SAA2B,EAAA;IAClE,OAAO;QACL,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;QACvC,CAAC;AACD,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1E,CAAC;;AAGD,QAAA,SAAS,CAAC,aAAqB,EAAA;AAC7B,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,sCAAsC,EAAE;AAC3D,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACpC,aAAA,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,aAAqB,EAAE,IAA+B,EAAA;AAC7D,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,sCAAsC,EAAE;AAC5D,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;QACD,WAAW,CAAC,aAAqB,EAAE,OAAe,EAAA;AAChD,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,gDAAgD,EAAE;gBACxE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;AAC7C,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,WAAW,CAAC,aAAqB,EAAE,OAAe,EAAE,IAA+B,EAAA;AACjF,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,gDAAgD,EAAE;gBACvE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;AAC5C,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;QAED,aAAa,CAAC,aAAqB,EAAE,OAAwC,EAAA;AAC3E,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0CAA0C,EAAE;AAC/D,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,aAAa,EAAE;AACvB,oBAAA,KAAK,EAAE,OAAO;AACf,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;QACD,gBAAgB,CAAC,aAAqB,EAAE,WAAmB,EAAA;AACzD,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,wDAAwD,EAAE;gBAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;AACjD,aAAA,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,aAAqB,EAAE,IAAmC,EAAA;AACrE,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,0CAA0C,EAAE;AAChE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,eAAe,CAAC,aAAqB,EAAE,WAAmB,EAAE,IAAmC,EAAA;AAC7F,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,wDAAwD,EAAE;gBAC/E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;AAChD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;QACD,eAAe,CAAC,aAAqB,EAAE,WAAmB,EAAA;AACxD,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,wDAAwD,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE;AACjD,aAAA,CAAC;QACJ,CAAC;;QAGD,QAAQ,CACN,aAAqB,EACrB,OAAkC,EAAA;AAElC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,qCAAqC,EAAE;AAC1D,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,aAAa,EAAE;AACvB,oBAAA,KAAK,EAAE,OAAO;AACf,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,gBAAgB,CAAC,aAAqB,EAAA;AACpC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,6CAA6C,EAAE;AAClE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACpC,aAAA,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,aAAqB,EAAE,cAAsB,EAAA;AAC/D,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,8DAA8D,EAAE;gBACnF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACpD,aAAA,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,aAAqB,EAAE,MAAc,EAAA;AAC3D,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,2DAA2D,EAAE;gBAChF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE;AAC5C,aAAA,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,aAAqB,EAAE,IAAsC,EAAA;AACxE,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,6CAA6C,EAAE;AACnE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,kBAAkB,CAAC,aAAqB,EAAE,cAAsB,EAAE,IAAsC,EAAA;AACtG,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,8DAA8D,EAAE;gBACrF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACnD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,qBAAqB,CAAC,aAAqB,EAAE,cAAsB,EAAE,IAAwB,EAAA;AAC3F,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,wEAAwE,EAAE;gBAC/F,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACnD,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;QACD,kBAAkB,CAAC,aAAqB,EAAE,cAAsB,EAAA;AAC9D,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,8DAA8D,EAAE;gBACtF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE;AACpD,aAAA,CAAC;QACJ,CAAC;AACD,QAAA,aAAa,CAAC,aAAqB,EAAA;AACjC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,4CAA4C,EAAE;AACjE,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,EAAE;AACpC,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACzHM,SAAU,mBAAmB,CAAC,SAA2B,EAAA;IAC7D,OAAO;AACL;;;AAGG;AACH,QAAA,YAAY,CAAC,MAA2B,EAAA;AACtC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,yBAAyB,CAAC,EAAU,EAAA;AAClC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE;AAC9C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,gBAAgB,GAAA;AACd,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAClD,CAAC;AAED;;;AAGG;AACH,QAAA,6BAA6B,CAAC,EAAU,EAAA;AACtC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,+BAA+B,EAAE;AACpD,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,eAAe,GAAA;AACb,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAChD,CAAC;AAED;;;AAGG;AACH,QAAA,4BAA4B,CAAC,EAAU,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,6BAA6B,EAAE;AAClD,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,mBAAmB,CAAC,MAAkC,EAAA;AACpD,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE;AACjD,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,gCAAgC,CAAC,EAAU,EAAE,MAAkC,EAAA;AAC7E,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,iCAAiC,EAAE;AACtD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,cAAc,CAAC,MAA4B,EAAA;AACzC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE;AAC5C,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;QACH,2BAA2B,CAAC,EAAU,EAAE,MAA4B,EAAA;AAClE,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE;AACjD,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,EAAE,EAAE,EAAE;AACZ,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC3GM,SAAU,sBAAsB,CAAC,SAA2B,EAAA;IAChE,OAAO;AACL;;AAEG;QACH,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;QACrC,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,kBAAkB,EAAE;AACvC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,gBAAgB,CAAC,aAAqB,EAAE,MAAyC,EAAA;AAC/E,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,8BAA8B,EAAE;AACnD,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;AAC3B,oBAAA,KAAK,EAAE,MAAM;AACd,iBAAA;AACF,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAAwB,EAAA;AAC7B,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAAwB,EAAA;AACzC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC1C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACvDM,SAAU,yBAAyB,CAAC,SAA2B,EAAA;IACnE,OAAO;AACL;;AAEG;AACH,QAAA,MAAM,CAAC,MAA+B,EAAA;AACpC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1B,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE;AAC1C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAA2B,EAAA;AAChC,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACtC,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAA2B,EAAA;AAC5C,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,qBAAqB,EAAE;AAC5C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;gBACxB,IAAI;AACL,aAAA,CAAC;QACJ,CAAC;AAED;;;AAGG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC7C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC1DM,SAAU,kBAAkB,CAAC,SAA2B,EAAA;IAC5D,OAAO;AACL;;AAEG;QACH,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QACjC,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE;AACnC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAAoB,EAAA;AACzB,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAAoB,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE;AACtC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC9CM,SAAU,kBAAkB,CAAC,SAA2B,EAAA;IAC5D,OAAO;AACL;;AAEG;QACH,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;QACjC,CAAC;AAED;;AAEG;AACH,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE;AACnC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,IAAoB,EAAA;AACzB,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;QACH,MAAM,CAAC,EAAU,EAAE,IAAoB,EAAA;AACrC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE;AACrC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;AAED;;AAEG;AACH,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE;AACtC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;AC7CM,SAAU,qBAAqB,CAAC,SAA2B,EAAA;IAC/D,OAAO;;QAEL,MAAM,GAAA;AACJ,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;QACpC,CAAC;;AAGD,QAAA,OAAO,CAAC,EAAU,EAAA;AAChB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACtC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,MAAM,CAAC,IAAuB,EAAA;AAC5B,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE;AAClC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;QAGD,MAAM,CAAC,EAAU,EAAE,IAAuB,EAAA;AACxC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACxC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,MAAM,CAAC,EAAU,EAAA;AACf,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACzC,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE;AAC5C,gBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE;AACzB,aAAA,CAAC;QACJ,CAAC;;AAGD,QAAA,YAAY,CAAC,IAA6B,EAAA;AACxC,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACzC,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;QACJ,CAAC;;QAGD,cAAc,CAAC,UAAkB,EAAE,MAAc,EAAA;AAC/C,YAAA,OAAO,SAAS,CAAC,MAAM,CAAC,wCAAwC,EAAE;gBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;AACzC,aAAA,CAAC;QACJ,CAAC;KACF;AACH;;ACnDM,SAAU,sBAAsB,CAAC,OAAe,EAAA;AACpD,IAAA,OAAO,YAAY,CAAQ,EAAE,OAAO,EAAE,CAAC;AACzC;AAaM,SAAU,qBAAqB,CAAC,SAA2B,EAAA;IAC/D,OAAO;AACL,QAAA,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC;AAClC,QAAA,WAAW,EAAE,wBAAwB,CAAC,SAAS,CAAC;AAChD,QAAA,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC;AACtC,QAAA,SAAS,EAAE,sBAAsB,CAAC,SAAS,CAAC;AAC5C,QAAA,YAAY,EAAE,yBAAyB,CAAC,SAAS,CAAC;AAClD,QAAA,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC;AACpC,QAAA,KAAK,EAAE,kBAAkB,CAAC,SAAS,CAAC;AACpC,QAAA,QAAQ,EAAE,qBAAqB,CAAC,SAAS,CAAC;KAC3C;AACH;;ACvCYC;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,YAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EANWA,oBAAY,KAAZA,oBAAY,GAAA,EAAA,CAAA,CAAA;;MC0CX,mBAAmB,GAA0C,CAAC,EACzE,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,KAAI;AACH,IAAA,MAAM,UAAU,GAAsB;AACpC,QAAA,SAAS,EAAE,CAAA,EAAG,WAAW,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE;AAC3C,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,YAAY,EACV,OAAO,MAAM,KAAK;AAChB,cAAE,MAAM,CAAC,QAAQ,CAAC;AAClB,cAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;AAC1C,QAAA,KAAK,EAAE,sBAAsB;QAC7B,gBAAgB,EAAE,MAAK;AACrB,YAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3E,CAAC;AACD,QAAA,oBAAoB,EAAE,IAAI;KAC3B;IAED,QACEF,cAAA,CAAC,YAAY,EAAA,EAAA,GAAK,UAAU,YAC1BA,cAAA,CAAC,gBAAgB,EAAA,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAAA,QAAA,EAEjC,QAAQ,EAAA,CACQ,EAAA,CACN;AAEnB;AAEA,MAAM,eAAe,GAAGG,oBAAa,CAAsB;AACzD,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,eAAe,EAAE,cAAa,CAAC;AAC/B,IAAA,OAAO,EAAE,MAAM,IAAI;AACnB,IAAA,SAAS,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE;AAClC,IAAA,SAAS,EAAE,MAAM,KAAK;AACtB,IAAA,YAAY,EAAE,MAAM,KAAK;AACzB,IAAA,aAAa,EAAE,MAAM,KAAK;AAC1B,IAAA,eAAe,EAAE,MAAM,KAAK;AAC5B,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,WAAW,EAAE,SAAS;AACvB,CAAA,CAAC;AAEF;AACA,MAAM,iBAAiB,GAAG,CACxB,KAAyB,KACC;AAC1B,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;AACvB,IAAA,IAAI;AACF,QAAA,OAAO,SAAS,CAAkB,KAAK,CAAC;IAC1C;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC;AACzD,QAAA,OAAO,IAAI;IACb;AACF,CAAC;AAED,MAAM,gBAAgB,GAAoC,CAAC,EACzD,UAAU,GAAG,gCAAgC,EAC7C,gBAAgB,GAAG,KAAK,EACxB,QAAQ,GACT,KAAI;AACH,IAAA,MAAM,IAAI,GAAG,OAAO,EAAE;IACtB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGC,eAAQ,CAAqB,IAAI,CAAC;AACxE,IAAA,MAAM,oBAAoB,GAAGC,aAAM,CAAC,KAAK,CAAC;;AAG1C,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;AAChC,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY;AAC3C,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG;;IAG9CC,gBAAS,CAAC,MAAK;AACb,QAAA,IACE,CAAC,eAAe;AAChB,YAAA,CAAC,SAAS;AACV,YAAA,CAAC,eAAe;AAChB,YAAA,CAAC,oBAAoB,CAAC,OAAO,EAC7B;AACA,YAAA,oBAAoB,CAAC,OAAO,GAAG,IAAI;YACnC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,GAAQ,KAAI;AACrC,gBAAA,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC;AACrE,YAAA,CAAC,CAAC;QACJ;;IAEF,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;;AAGjD,IAAA,MAAM,SAAS,GAAGC,cAAO,CAAmB,MAAK;AAC/C,QAAA,OAAO,sBAAsB,CAAC,UAAU,CAAC;AAC3C,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,QAAQ,GAAGA,cAAO,CAAkB,MAAK;AAC7C,QAAA,OAAO,qBAAqB,CAAC,SAAS,CAAC;AACzC,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,kBAAkB,GAAGA,cAAO,CAAC,MAAK;AACtC,QAAA,OAAO,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC,GAAG,IAAI;AAC5D,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;;IAGjBD,gBAAS,CAAC,MAAK;QACb,IAAI,WAAW,EAAE;YACf,SAAS,CAAC,GAAG,CAAC;gBACZ,SAAS,CAAC,EAAE,OAAO,EAAE,EAAA;oBACnB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,WAAW,CAAA,CAAE,CAAC;AAC7D,oBAAA,OAAO,OAAO;gBAChB,CAAC;AACF,aAAA,CAAC;AACF,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,MAAM,CAAC,WAAW,GAAG,WAAW;YAClC;QACF;aAAO;AACL,YAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,gBAAA,MAAM,CAAC,WAAW,GAAG,SAAS;YAChC;QACF;AACF,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;AAI5B,IAAA,MAAM,eAAe,GAAGE,kBAAW,CAAC,MAAmB;QACrD,MAAM,OAAO,GAAG,WAA8B;QAC9C,OAAO;AACL,YAAA,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;AAC3B,YAAA,IAAI,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;AAC/B,YAAA,QAAQ,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE;SACrC;AACH,IAAA,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AAEjB,IAAA,MAAM,YAAY,GAAGA,kBAAW,CAC9B,CAAC,IAAY,KAAa;AACxB,QAAA,OAAO,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK;AACzE,IAAA,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB;IAED,MAAM,aAAa,GAAGA,kBAAW,CAC/B,CAAC,IAAY,EAAE,QAAiB,KAAa;AAC3C,QAAA,IAAI,CAAC,kBAAkB;AAAE,YAAA,OAAO,KAAK;QACrC,IAAI,CAAC,kBAAkB,EAAE,eAAe;AAAE,YAAA,OAAO,KAAK;QAEtD,IAAI,QAAQ,EAAE;AACZ,YAAA,QACE,kBAAkB,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnE,gBAAA,KAAK;QAET;QAEA,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,IAAI,CAC3D,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC7C;AACH,IAAA,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB;;IAGDF,gBAAS,CAAC,MAAK;QACb,IAAI,SAAS,GAAG,IAAI;AAEpB,QAAA,MAAM,aAAa,GAAG,YAAW;YAC/B,IAAI,eAAe,EAAE;gBACnB,IAAI,gBAAgB,EAAE;oBACpB,IAAI,SAAS,EAAE;AACb,wBAAA,MAAM,WAAW,GAAgB;4BAC/B,YAAY,EAAE,eAAe,EAAE;yBACjB;wBAChB,cAAc,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC;oBACxD;oBACA;gBACF;AAEA,gBAAA,IAAI;oBACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;oBAC5C,IAAI,SAAS,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AACrC,wBAAA,MAAM,WAAW,GAAgB;AAC/B,4BAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI;4BACrB,YAAY,EAAE,eAAe,EAAE;yBAChC;wBACD,cAAc,CAAC,WAAW,CAAC;oBAC7B;gBACF;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC;gBACnD;YACF;AAAO,iBAAA,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE;gBACzC,IAAI,SAAS,EAAE;oBACb,cAAc,CAAC,IAAI,CAAC;gBACtB;YACF;AACF,QAAA,CAAC;AAED,QAAA,aAAa,EAAE;AAEf,QAAA,OAAO,MAAK;YACV,SAAS,GAAG,KAAK;AACnB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE;QACD,eAAe;QACf,SAAS;QACT,eAAe;QACf,QAAQ;QACR,gBAAgB;QAChB,cAAc;AACf,KAAA,CAAC;AAEF,IAAA,MAAM,eAAe,GAAGE,kBAAW,CAAC,YAAW;QAC7C,IAAI,eAAe,EAAE;YACnB,IAAI,gBAAgB,EAAE;AACpB,gBAAA,MAAM,WAAW,GAAgB;oBAC/B,YAAY,EAAE,eAAe,EAAE;iBACjB;gBAChB,cAAc,CAAC,WAAW,CAAC;gBAC3B;YACF;AAEA,YAAA,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,gBAAA,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AACxB,oBAAA,MAAM,WAAW,GAAgB;AAC/B,wBAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI;wBACrB,YAAY,EAAE,eAAe,EAAE;qBAChC;oBACD,cAAc,CAAC,WAAW,CAAC;gBAC7B;YACF;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;YACrD;QACF;IACF,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;;AAIlE,IAAA,MAAM,OAAO,GAAGA,kBAAW,CAAC,MAAK;AAC/B,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3B,cAAc,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,eAAe,CAAC;AACnB,YAAA,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ;AACnC,SAAA,CAAC;QACF,IAAI,CAAC,eAAe,EAAE;AACxB,IAAA,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAEV,IAAA,MAAM,SAAS,GAAGA,kBAAW,CAC3B,CAAC,QAAgB,KAAI;AACnB,QAAA,IAAI,YAAY,CAACN,oBAAY,CAAC,aAAa,CAAC,EAAE;AAC5C,YAAA,OAAO,IAAI;QACb;QAEA,QACE,WAAW,EAAE,wBAAwB,EAAE,IAAI,CACzC,CAAC,YAAY,KAAK,YAAY,CAAC,aAAa,KAAK,QAAQ,CAC1D,IAAI,KAAK;IAEd,CAAC,EACD,CAAC,YAAY,EAAE,WAAW,EAAE,wBAAwB,CAAC,CACtD;AAED,IAAA,MAAM,SAAS,GAAGM,kBAAW,CAAC,MAAK;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE;;IAE9B,CAAC,EAAE,EAAE,CAAC;;AAGN,IAAA,MAAM,YAAY,GAAGD,cAAO,CAC1B,OAAO;QACL,aAAa,EAAE,CAAC,SAAS;AACzB,QAAA,IAAI,EAAE,WAAW;QACjB,eAAe;QACf,OAAO;AACP,QAAA,eAAe,EAAE,MAAM,eAAe;QACtC,SAAS;QACT,SAAS;QACT,YAAY;QACZ,aAAa;QACb,WAAW;QACX,SAAS;QACT,QAAQ;AACT,KAAA,CAAC,EACF;QACE,SAAS;QACT,WAAW;QACX,eAAe;QACf,OAAO;QACP,eAAe;QACf,SAAS;QACT,SAAS;QACT,YAAY;QACZ,aAAa;QACb,WAAW;QACX,SAAS;QACT,QAAQ;AACT,KAAA,CACF;AAED,IAAA,QACEP,cAAA,CAAC,eAAe,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,YAAY,EAAA,QAAA,EAC1C,QAAQ,EAAA,CACgB;AAE/B,CAAC;AAQM,MAAM,cAAc,GAAG,MAAMS,iBAAU,CAAC,eAAe;;ACxW9D;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;AAC3F,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO;AAC9C,EAAE,uBAAuB;AACzB,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;AAC3D,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACjC,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;AACvC,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK;AACjF,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK;AAC5F,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnB,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AACzE,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE;AACF,CAAC;;ACzBD;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,iBAAiB,GAAG;AACxB,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,OAAO,EAAE,WAAW;AACtB,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE,cAAc;AACxB,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,aAAa,EAAE,OAAO;AACxB,EAAE,cAAc,EAAE;AAClB,CAAC;;ACjBD;AACA;AACA;AACA;AACA;AACA;;;AAMA,MAAM,IAAI,GAAGC,iBAAU;AACvB,EAAE,CAAC;AACH,IAAI,KAAK,GAAG,cAAc;AAC1B,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,WAAW,GAAG,CAAC;AACnB,IAAI,mBAAmB;AACvB,IAAI,SAAS,GAAG,EAAE;AAClB,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,GAAG;AACP,GAAG,EAAE,GAAG,KAAKC,oBAAa;AAC1B,IAAI,KAAK;AACT,IAAI;AACJ,MAAM,GAAG;AACT,MAAM,GAAG,iBAAiB;AAC1B,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW;AAC9F,MAAM,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;AAClD,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;AACrE,MAAM,GAAG;AACT,KAAK;AACL,IAAI;AACJ,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAKA,oBAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ;AACvD;AACA;AACA,CAAC;;ACvCD;AACA;AACA;AACA;AACA;AACA;;;AAMA,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACjD,EAAE,MAAM,SAAS,GAAGD,iBAAU;AAC9B,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAKC,oBAAa,CAAC,IAAI,EAAE;AAC1D,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,MAAM,SAAS,EAAE,YAAY;AAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC5B,QAAQ;AACR,OAAO;AACP,MAAM,GAAG;AACT,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC;AAChD,EAAE,OAAO,SAAS;AAClB,CAAC;;AC1BD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,6BAA6B,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC;;ACVlE,MAAM,oBAAoB,GAAG,GAAG;AAChC,MAAM,qBAAqB,GAAG,MAAM,IAAI;AACxC,EAAE,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;AACzC,EAAE,MAAM;AACR,IAAI,sBAAsB;AAC1B,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ,EAAE,MAAM,eAAe,GAAG,SAAS,IAAI;AACvC,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAC5D;AACA,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzD,MAAM,UAAU,CAAC,KAAK,EAAE;AACxB,IAAI;AACJ,IAAI,OAAO,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,8BAA8B,CAAC,SAAS,CAAC;AAC/F,EAAE,CAAC;AACH,EAAE,MAAM,2BAA2B,GAAG,CAAC,YAAY,EAAE,kBAAkB,KAAK;AAC5E,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,CAAC,IAAI,EAAE;AAChE,IAAI,IAAI,kBAAkB,IAAI,8BAA8B,CAAC,YAAY,CAAC,EAAE;AAC5E,MAAM,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;AAC5E,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB,EAAE,CAAC;AACH,EAAE,OAAO;AACT,IAAI,eAAe;AACnB,IAAI;AACJ,GAAG;AACH,CAAC;AACD,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,eAAe,KAAK;AAC3D,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,IAAI,OAAO,eAAe,CAAC,YAAY;AACvC,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC;AACxC,EAAE,MAAM,mBAAmB,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC5E,EAAE,MAAM,2BAA2B,GAAG,mBAAmB,GAAG,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,SAAS;AACnI,EAAE,IAAI,2BAA2B,EAAE;AACnC,IAAI,OAAO,2BAA2B;AACtC,EAAE;AACF,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/C,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC;AACzD,EAAE,OAAO,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI;AACJ,GAAG,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY;AAC3C,CAAC;AACD,MAAM,sBAAsB,GAAG,YAAY;AAC3C,MAAM,8BAA8B,GAAG,SAAS,IAAI;AACpD,EAAE,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9C,IAAI,MAAM,0BAA0B,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChF,IAAI,MAAM,QAAQ,GAAG,0BAA0B,EAAE,SAAS,CAAC,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtG,IAAI,IAAI,QAAQ,EAAE;AAClB;AACA,MAAM,OAAO,aAAa,GAAG,QAAQ;AACrC,IAAI;AACJ,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA,MAAM,cAAc,GAAG,MAAM,IAAI;AACjC,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,QAAQ,EAAE,IAAI,GAAG,EAAE;AACvB,IAAI,UAAU,EAAE;AAChB,GAAG;AACH,EAAE,KAAK,MAAM,YAAY,IAAI,WAAW,EAAE;AAC1C,IAAI,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC;AACvF,EAAE;AACF,EAAE,OAAO,QAAQ;AACjB,CAAC;AACD,MAAM,yBAAyB,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,KAAK;AACxF,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,IAAI;AACxC,IAAI,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AAC7C,MAAM,MAAM,qBAAqB,GAAG,eAAe,KAAK,EAAE,GAAG,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC;AACxH,MAAM,qBAAqB,CAAC,YAAY,GAAG,YAAY;AACvD,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;AAC/C,MAAM,IAAI,aAAa,CAAC,eAAe,CAAC,EAAE;AAC1C,QAAQ,yBAAyB,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC;AAC/F,QAAQ;AACR,MAAM;AACN,MAAM,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AACtC,QAAQ,SAAS,EAAE,eAAe;AAClC,QAAQ;AACR,OAAO,CAAC;AACR,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK;AACnE,MAAM,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC;AAC/F,IAAI,CAAC,CAAC;AACN,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,IAAI,KAAK;AAC3C,EAAE,IAAI,sBAAsB,GAAG,eAAe;AAC9C,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI;AACvD,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxD,MAAM,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;AACpD,QAAQ,QAAQ,EAAE,IAAI,GAAG,EAAE;AAC3B,QAAQ,UAAU,EAAE;AACpB,OAAO,CAAC;AACR,IAAI;AACJ,IAAI,sBAAsB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1E,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,sBAAsB;AAC/B,CAAC;AACD,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,CAAC,aAAa;;AAEhD;AACA,MAAM,cAAc,GAAG,YAAY,IAAI;AACvC,EAAE,IAAI,YAAY,GAAG,CAAC,EAAE;AACxB,IAAI,OAAO;AACX,MAAM,GAAG,EAAE,MAAM,SAAS;AAC1B,MAAM,GAAG,EAAE,MAAM,CAAC;AAClB,KAAK;AACL,EAAE;AACF,EAAE,IAAI,SAAS,GAAG,CAAC;AACnB,EAAE,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,EAAE,IAAI,aAAa,GAAG,IAAI,GAAG,EAAE;AAC/B,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACzB,IAAI,SAAS,EAAE;AACf,IAAI,IAAI,SAAS,GAAG,YAAY,EAAE;AAClC,MAAM,SAAS,GAAG,CAAC;AACnB,MAAM,aAAa,GAAG,KAAK;AAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACvB,IAAI;AACJ,EAAE,CAAC;AACH,EAAE,OAAO;AACT,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;AAC/B,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,MAAM,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,SAAS,EAAE;AAC1D,QAAQ,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,QAAQ,OAAO,KAAK;AACpB,MAAM;AACN,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AACpB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1B,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7B,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1B,MAAM;AACN,IAAI;AACJ,GAAG;AACH,CAAC;AACD,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,kBAAkB,GAAG,GAAG;AAC9B,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,MAAM;AAC3D,MAAM,oBAAoB,GAAG,MAAM,IAAI;AACvC,EAAE,MAAM;AACR,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,cAAc,GAAG,SAAS,IAAI;AACpC,IAAI,MAAM,SAAS,GAAG,EAAE;AACxB,IAAI,IAAI,YAAY,GAAG,CAAC;AACxB,IAAI,IAAI,UAAU,GAAG,CAAC;AACtB,IAAI,IAAI,aAAa,GAAG,CAAC;AACzB,IAAI,IAAI,uBAAuB;AAC/B,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAC3D,MAAM,IAAI,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC;AAC7C,MAAM,IAAI,YAAY,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE;AAClD,QAAQ,IAAI,gBAAgB,KAAK,kBAAkB,EAAE;AACrD,UAAU,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC/D,UAAU,aAAa,GAAG,KAAK,GAAG,yBAAyB;AAC3D,UAAU;AACV,QAAQ;AACR,QAAQ,IAAI,gBAAgB,KAAK,GAAG,EAAE;AACtC,UAAU,uBAAuB,GAAG,KAAK;AACzC,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AACpC,QAAQ,YAAY,EAAE;AACtB,MAAM,CAAC,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3C,QAAQ,YAAY,EAAE;AACtB,MAAM,CAAC,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3C,QAAQ,UAAU,EAAE;AACpB,MAAM,CAAC,MAAM,IAAI,gBAAgB,KAAK,GAAG,EAAE;AAC3C,QAAQ,UAAU,EAAE;AACpB,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,kCAAkC,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;AACtH,IAAI,MAAM,aAAa,GAAG,sBAAsB,CAAC,kCAAkC,CAAC;AACpF,IAAI,MAAM,oBAAoB,GAAG,aAAa,KAAK,kCAAkC;AACrF,IAAI,MAAM,4BAA4B,GAAG,uBAAuB,IAAI,uBAAuB,GAAG,aAAa,GAAG,uBAAuB,GAAG,aAAa,GAAG,SAAS;AACjK,IAAI,OAAO;AACX,MAAM,SAAS;AACf,MAAM,oBAAoB;AAC1B,MAAM,aAAa;AACnB,MAAM;AACN,KAAK;AACL,EAAE,CAAC;AACH,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,MAAM,UAAU,GAAG,MAAM,GAAG,kBAAkB;AAClD,IAAI,MAAM,sBAAsB,GAAG,cAAc;AACjD,IAAI,cAAc,GAAG,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG;AACtI,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,SAAS,EAAE,EAAE;AACnB,MAAM,oBAAoB,EAAE,KAAK;AACjC,MAAM,aAAa,EAAE,SAAS;AAC9B,MAAM,4BAA4B,EAAE;AACpC,KAAK;AACL,EAAE;AACF,EAAE,IAAI,0BAA0B,EAAE;AAClC,IAAI,MAAM,sBAAsB,GAAG,cAAc;AACjD,IAAI,cAAc,GAAG,SAAS,IAAI,0BAA0B,CAAC;AAC7D,MAAM,SAAS;AACf,MAAM,cAAc,EAAE;AACtB,KAAK,CAAC;AACN,EAAE;AACF,EAAE,OAAO,cAAc;AACvB,CAAC;AACD,MAAM,sBAAsB,GAAG,aAAa,IAAI;AAChD,EAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAClD,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;AACpD,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,EAAE;AACF,EAAE,OAAO,aAAa;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,MAAM,IAAI;AACtC,EAAE,MAAM,uBAAuB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AACtH,EAAE,MAAM,aAAa,GAAG,SAAS,IAAI;AACrC,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AAC/B,MAAM,OAAO,SAAS;AACtB,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,EAAE;AAC9B,IAAI,IAAI,iBAAiB,GAAG,EAAE;AAC9B,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI;AAClC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC,QAAQ,CAAC;AAC1F,MAAM,IAAI,mBAAmB,EAAE;AAC/B,QAAQ,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC;AACnE,QAAQ,iBAAiB,GAAG,EAAE;AAC9B,MAAM,CAAC,MAAM;AACb,QAAQ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,MAAM;AACN,IAAI,CAAC,CAAC;AACN,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACrD,IAAI,OAAO,eAAe;AAC1B,EAAE,CAAC;AACH,EAAE,OAAO,aAAa;AACtB,CAAC;AACD,MAAM,iBAAiB,GAAG,MAAM,KAAK;AACrC,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;AACzC,EAAE,cAAc,EAAE,oBAAoB,CAAC,MAAM,CAAC;AAC9C,EAAE,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC;AAC5C,EAAE,GAAG,qBAAqB,CAAC,MAAM;AACjC,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,KAAK;AACjC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,WAAW,KAAK;AACnD,EAAE,MAAM;AACR,IAAI,cAAc;AAClB,IAAI,eAAe;AACnB,IAAI,2BAA2B;AAC/B,IAAI;AACJ,GAAG,GAAG,WAAW;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,qBAAqB,GAAG,EAAE;AAClC,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAChE,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;AAClE,IAAI,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC;AAC/C,IAAI,MAAM;AACV,MAAM,UAAU;AAChB,MAAM,SAAS;AACf,MAAM,oBAAoB;AAC1B,MAAM,aAAa;AACnB,MAAM;AACN,KAAK,GAAG,cAAc,CAAC,iBAAiB,CAAC;AACzC,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9E,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,kBAAkB,GAAG,CAAC,CAAC,4BAA4B;AAC3D,IAAI,IAAI,YAAY,GAAG,eAAe,CAAC,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,4BAA4B,CAAC,GAAG,aAAa,CAAC;AACrI,IAAI,IAAI,CAAC,YAAY,EAAE;AACvB,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B;AACA,QAAQ,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAChF,QAAQ;AACR,MAAM;AACN,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,CAAC;AACnD,MAAM,IAAI,CAAC,YAAY,EAAE;AACzB;AACA,QAAQ,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAChF,QAAQ;AACR,MAAM;AACN,MAAM,kBAAkB,GAAG,KAAK;AAChC,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAI,MAAM,UAAU,GAAG,oBAAoB,GAAG,eAAe,GAAG,kBAAkB,GAAG,eAAe;AACpG,IAAI,MAAM,OAAO,GAAG,UAAU,GAAG,YAAY;AAC7C,IAAI,IAAI,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACjD;AACA,MAAM;AACN,IAAI;AACJ,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,IAAI,MAAM,cAAc,GAAG,2BAA2B,CAAC,YAAY,EAAE,kBAAkB,CAAC;AACxF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACpD,MAAM,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC;AACrC,MAAM,qBAAqB,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACpD,IAAI;AACJ;AACA,IAAI,MAAM,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;AAC5E,EAAE;AACF,EAAE,OAAO,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,GAAG;AAClB,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,aAAa;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;AACnC,IAAI,IAAI,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE;AACvC,MAAM,IAAI,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC7C,QAAQ,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC;AACjC,QAAQ,MAAM,IAAI,aAAa;AAC/B,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,MAAM;AACf;AACA,MAAM,OAAO,GAAG,GAAG,IAAI;AACvB,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,IAAI,aAAa;AACnB,EAAE,IAAI,MAAM,GAAG,EAAE;AACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AAChB,MAAM,IAAI,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,QAAQ,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC;AACjC,QAAQ,MAAM,IAAI,aAAa;AAC/B,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,MAAM;AACf,CAAC;AACD,SAAS,mBAAmB,CAAC,iBAAiB,EAAE,GAAG,gBAAgB,EAAE;AACrE,EAAE,IAAI,WAAW;AACjB,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,cAAc,GAAG,iBAAiB;AACxC,EAAE,SAAS,iBAAiB,CAAC,SAAS,EAAE;AACxC,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,mBAAmB,KAAK,mBAAmB,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;AAC7I,IAAI,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC3C,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG;AACpC,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG;AACpC,IAAI,cAAc,GAAG,aAAa;AAClC,IAAI,OAAO,aAAa,CAAC,SAAS,CAAC;AACnC,EAAE;AACF,EAAE,SAAS,aAAa,CAAC,SAAS,EAAE;AACpC,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC5C,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,OAAO,YAAY;AACzB,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;AACzD,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/B,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,OAAO,SAAS,iBAAiB,GAAG;AACtC,IAAI,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxD,EAAE,CAAC;AACH;AACA,MAAM,SAAS,GAAG,GAAG,IAAI;AACzB,EAAE,MAAM,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/C,EAAE,WAAW,CAAC,aAAa,GAAG,IAAI;AAClC,EAAE,OAAO,WAAW;AACpB,CAAC;AACD,MAAM,mBAAmB,GAAG,6BAA6B;AACzD,MAAM,sBAAsB,GAAG,6BAA6B;AAC5D,MAAM,aAAa,GAAG,YAAY;AAClC,MAAM,eAAe,GAAG,kCAAkC;AAC1D,MAAM,eAAe,GAAG,2HAA2H;AACnJ,MAAM,kBAAkB,GAAG,oDAAoD;AAC/E;AACA,MAAM,WAAW,GAAG,iEAAiE;AACrF,MAAM,UAAU,GAAG,8FAA8F;AACjH,MAAM,UAAU,GAAG,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9E,MAAM,YAAY,GAAG,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,MAAM,KAAK,GAAG,MAAM,IAAI;AACxB,MAAM,YAAY,GAAG,KAAK;AAC1B;AACA;AACA;AACA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,MAAM,OAAO,GAAG,MAAM,KAAK;AAC3B,MAAM,QAAQ,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,MAAM,OAAO,GAAG,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,MAAM,iBAAiB,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC1F,MAAM,eAAe,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC;AACjF,MAAM,gBAAgB,GAAG,KAAK,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjE,MAAM,iBAAiB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC;AAC1F,MAAM,iBAAiB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;AACtF,MAAM,mBAAmB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC;AACzF,MAAM,gBAAgB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC;AACnF,MAAM,iBAAiB,GAAG,KAAK,IAAI,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC;AACtF,MAAM,mBAAmB,GAAG,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AACvE,MAAM,yBAAyB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC;AACvF,MAAM,6BAA6B,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,CAAC;AAC/F,MAAM,2BAA2B,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,CAAC;AAC3F,MAAM,uBAAuB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC;AACnF,MAAM,wBAAwB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC;AACrF,MAAM,yBAAyB,GAAG,KAAK,IAAI,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;AAC7F;AACA,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,KAAK;AAC7D,EAAE,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE;AACF,EAAE,OAAO,KAAK;AACd,CAAC;AACD,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,kBAAkB,GAAG,KAAK,KAAK;AACjF,EAAE,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnD,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,kBAAkB;AAC7B,EAAE;AACF,EAAE,OAAO,KAAK;AACd,CAAC;AACD;AACA,MAAM,eAAe,GAAG,KAAK,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,YAAY;AAC/E,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK;AAClE,MAAM,WAAW,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS;AAC1F,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ;AACjD,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ;AACjD,MAAM,iBAAiB,GAAG,KAAK,IAAI,KAAK,KAAK,aAAa;AAC1D,MAAM,aAAa,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ;AA2BjD,MAAM,gBAAgB,GAAG,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC;AACvC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;AAC7C,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC;AACjD,EAAE,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC;AAC/C,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC;AACpD,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC,aAAa,CAAC;AACnD,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;AACzC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AACpG,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU;AACrF;AACA,EAAE,UAAU,EAAE,WAAW;AACzB;AACA,EAAE,WAAW,EAAE,cAAc;AAC7B;AACA,EAAE,cAAc,EAAE,aAAa;AAC/B;AACA,EAAE,aAAa,CAAC;AAChB,EAAE,MAAM,0BAA0B,GAAG,MAAM,CAAC,GAAG,aAAa,EAAE,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACtG,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC7E,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;AAC3D,EAAE,MAAM,uBAAuB,GAAG,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,CAAC;AAC7F,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;AACrF,EAAE,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC/G,EAAE,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE;AACpD,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AACnE,GAAG,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACtD,EAAE,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACpG,EAAE,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACzG,EAAE,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC;AACjJ,EAAE,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC;AACxG,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;AAClE,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,uBAAuB,EAAE,CAAC;AACrJ,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9E,EAAE,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,aAAa,EAAE,EAAE,2BAA2B,EAAE,mBAAmB,EAAE;AACvG,IAAI,QAAQ,EAAE,CAAC,mBAAmB,EAAE,gBAAgB;AACpD,GAAG,CAAC;AACJ,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,EAAE;AAC5C,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO;AAC3C,GAAG,CAAC;AACJ,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,eAAe,EAAE;AACnG,IAAI,IAAI,EAAE,CAAC,mBAAmB,EAAE,gBAAgB;AAChD,GAAG,CAAC;AACJ,EAAE,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;AACnG,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B;AACA,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACzE,EAAE,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;AAC7F,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACtE,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC;AAC/N,EAAE,MAAM,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,2BAA2B,EAAE,mBAAmB,CAAC;AAC9G,EAAE,MAAM,SAAS,GAAG,MAAM;AAC1B;AACA,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC/D,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACrF,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AACpF,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC3E,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAC;AACjF,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,GAAG;AAClB,IAAI,KAAK,EAAE;AACX,MAAM,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AAClD,MAAM,MAAM,EAAE,CAAC,OAAO,CAAC;AACvB,MAAM,IAAI,EAAE,CAAC,YAAY,CAAC;AAC1B,MAAM,UAAU,EAAE,CAAC,YAAY,CAAC;AAChC,MAAM,KAAK,EAAE,CAAC,KAAK,CAAC;AACpB,MAAM,SAAS,EAAE,CAAC,YAAY,CAAC;AAC/B,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AACnC,MAAM,IAAI,EAAE,CAAC,iBAAiB,CAAC;AAC/B,MAAM,aAAa,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC;AAClH,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC;AACpC,MAAM,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;AACtE,MAAM,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC;AAChF,MAAM,MAAM,EAAE,CAAC,YAAY,CAAC;AAC5B,MAAM,MAAM,EAAE,CAAC,YAAY,CAAC;AAC5B,MAAM,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC/B,MAAM,IAAI,EAAE,CAAC,YAAY,CAAC;AAC1B,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ;AACxE,KAAK;AACL,IAAI,WAAW,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW;AACjG,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC,WAAW,CAAC;AAC9B;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc;AACjF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,UAAU;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc;AACtE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;AAC1T;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;AACpC;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AACvD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC/D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAC9C;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;AACjE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,MAAM,EAAE,0BAA0B;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,aAAa;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,aAAa;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,aAAa;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,eAAe;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,eAAe;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,eAAe;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;AACrE;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,UAAU;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,UAAU;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC;AACtD;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE;AACxF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;AACzD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc;AAC/C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB;AAChF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,GAAG,EAAE,0BAA0B;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,yBAAyB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,GAAG,EAAE,0BAA0B;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,yBAAyB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,yBAAyB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW;AACrE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,qBAAqB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,qBAAqB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAQ,GAAG,EAAE,uBAAuB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,uBAAuB;AACxC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,uBAAuB;AACxC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,OAAO,EAAE,CAAC,GAAG,qBAAqB,EAAE,EAAE,QAAQ;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE,QAAQ;AAChE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE;AAC7D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,qBAAqB,EAAE;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,KAAK,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE;AAC9C,UAAU,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM;AAC/B,SAAS;AACT,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE,EAAE;AACrD,UAAU,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM;AAC/B,SAAS;AACT,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,qBAAqB;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,GAAG,uBAAuB,EAAE,EAAE,UAAU;AAChE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,uBAAuB,EAAE;AAC3D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,uBAAuB;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,uBAAuB;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,WAAW;AACtB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,EAAE,EAAE,CAAC;AACX,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,uBAAuB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;AAC5C;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,uBAAuB;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,WAAW;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,cAAc,EAAE,QAAQ;AAC1C,QAAQ,MAAM,EAAE,GAAG,WAAW,EAAE;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM;AAClD,QAAQ,OAAO;AACf,QAAQ;AACR,UAAU,MAAM,EAAE,CAAC,eAAe;AAClC,SAAS,EAAE,GAAG,WAAW,EAAE;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,CAAC,EAAE,CAAC;AACV,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;AAC1D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE;AAClD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE,iBAAiB;AAC9E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAC/D;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5C;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,iBAAiB;AACtE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB;AACpM,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,CAAC,6BAA6B,EAAE,gBAAgB,EAAE,SAAS;AACzE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC,aAAa,CAAC;AACnC;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC,SAAS,CAAC;AAChC;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC,cAAc,CAAC;AAC1C;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;AACpD;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;AAC1D;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;AACjE;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,gBAAgB;AACvE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE;AACjB,QAAQ,YAAY,EAAE,GAAG,uBAAuB,EAAE;AAClD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK;AACnE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC;AAClF;AACA;AACA;AACA;AACA,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,UAAU,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,MAAM;AAChD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,2BAA2B,EAAE,CAAC;AACpC,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,iBAAiB;AAC1F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACpF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,CAAC;AAC/E;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,CAAC;AACjE;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;AACpD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,uBAAuB;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,KAAK,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB;AACvI,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc;AACtF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;AAChD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ;AACjD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AAC/D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM;AAC1D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS;AACpD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,EAAE,EAAE,eAAe;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,EAAE,EAAE,aAAa;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,EAAE,EAAE,WAAW;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE;AACrB,UAAU,MAAM,EAAE,CAAC;AACnB,YAAY,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI;AAC3D,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC9D,UAAU,MAAM,EAAE,CAAC,EAAE,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;AAC7D,UAAU,KAAK,EAAE,CAAC,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,SAAS,EAAE,wBAAwB,EAAE,gBAAgB;AACrD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,EAAE,EAAE,UAAU;AACtB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,IAAI,EAAE,yBAAyB;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,GAAG,EAAE,yBAAyB;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,EAAE,EAAE,yBAAyB;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,GAAG,EAAE,UAAU;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,EAAE,EAAE,UAAU;AACtB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,WAAW;AAC5B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,WAAW;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,WAAW;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,MAAM,EAAE,gBAAgB;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC,kBAAkB,CAAC;AAC9C;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,gBAAgB;AACpC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC,kBAAkB,CAAC;AAC9C;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM;AACtD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,UAAU,EAAE,UAAU;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,MAAM,EAAE,QAAQ;AACvD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC1E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,iBAAiB;AAC5E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,OAAO,EAAE,UAAU;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE;AAChB;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,iBAAiB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB;AAC/F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,oBAAoB,EAAE,CAAC;AAC7B,QAAQ,cAAc,EAAE,UAAU;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,IAAI,EAAE,gBAAgB;AAC9B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC;AACpC;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,UAAU;AACxB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,aAAa,EAAE,CAAC,QAAQ,EAAE,iBAAiB;AACnD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,YAAY,EAAE,gBAAgB;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,YAAY,EAAE,UAAU;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE,iBAAiB;AAC7F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACjE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,aAAa,EAAE,cAAc;AACxE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,cAAc;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;AAC9E,OAAO,EAAE,cAAc,CAAC;AACxB;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS;AACxD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,CAAC,QAAQ;AAChC,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,kBAAkB,EAAE,sBAAsB;AAClD,OAAO,CAAC;AACR,MAAM,0BAA0B,EAAE,CAAC;AACnC,QAAQ,gBAAgB,EAAE,sBAAsB;AAChD,OAAO,CAAC;AACR,MAAM,8BAA8B,EAAE,CAAC;AACvC,QAAQ,kBAAkB,EAAE,UAAU;AACtC,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,gBAAgB,EAAE,UAAU;AACpC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,aAAa,EAAE,sBAAsB;AAC7C,OAAO,CAAC;AACR,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,WAAW,EAAE,sBAAsB;AAC3C,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,WAAW,EAAE,UAAU;AAC/B,OAAO,CAAC;AACR,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,CAAC,mBAAmB,EAAE,gBAAgB;AAC7D,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,kBAAkB,EAAE,sBAAsB;AAClD,OAAO,CAAC;AACR,MAAM,0BAA0B,EAAE,CAAC;AACnC,QAAQ,gBAAgB,EAAE,sBAAsB;AAChD,OAAO,CAAC;AACR,MAAM,8BAA8B,EAAE,CAAC;AACvC,QAAQ,kBAAkB,EAAE,UAAU;AACtC,OAAO,CAAC;AACR,MAAM,4BAA4B,EAAE,CAAC;AACrC,QAAQ,gBAAgB,EAAE,UAAU;AACpC,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS;AAC3C,OAAO,CAAC;AACR,MAAM,wBAAwB,EAAE,CAAC;AACjC,QAAQ,aAAa,EAAE,CAAC;AACxB,UAAU,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AACrC,UAAU,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ;AACrC,SAAS;AACT,OAAO,CAAC;AACR,MAAM,uBAAuB,EAAE,CAAC;AAChC,QAAQ,gBAAgB,EAAE,aAAa;AACvC,OAAO,CAAC;AACR,MAAM,sBAAsB,EAAE,CAAC;AAC/B,QAAQ,YAAY,EAAE,CAAC,QAAQ;AAC/B,OAAO,CAAC;AACR,MAAM,2BAA2B,EAAE,CAAC;AACpC,QAAQ,iBAAiB,EAAE,sBAAsB;AACjD,OAAO,CAAC;AACR,MAAM,yBAAyB,EAAE,CAAC;AAClC,QAAQ,eAAe,EAAE,sBAAsB;AAC/C,OAAO,CAAC;AACR,MAAM,6BAA6B,EAAE,CAAC;AACtC,QAAQ,iBAAiB,EAAE,UAAU;AACrC,OAAO,CAAC;AACR,MAAM,2BAA2B,EAAE,CAAC;AACpC,QAAQ,eAAe,EAAE,UAAU;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;AAChF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,IAAI,EAAE,eAAe;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,aAAa;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,WAAW;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AAC5D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE;AAChB;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,SAAS;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE;AACvB;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,yBAAyB,EAAE,iBAAiB;AACjF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,aAAa,EAAE,UAAU;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACvE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,YAAY,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACtE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACpE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AACnE,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,iBAAiB,EAAE;AAC3B;AACA,QAAQ,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,eAAe,EAAE,CAAC;AACxB,QAAQ,eAAe,EAAE,SAAS;AAClC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,qBAAqB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,mBAAmB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,oBAAoB,EAAE,CAAC;AAC7B,QAAQ,oBAAoB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAClF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,qBAAqB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,iBAAiB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC5E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,mBAAmB,EAAE,CAAC;AAC5B,QAAQ,mBAAmB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC9E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,uBAAuB;AACjD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,uBAAuB;AACnD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,kBAAkB,EAAE,uBAAuB;AACnD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE,gBAAgB;AACzH,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU;AACzC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB;AACpF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB;AAC/D,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,OAAO,EAAE,CAAC;AAChB,QAAQ,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB;AAC7E,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,oBAAoB,EAAE,CAAC;AAC7B,QAAQ,oBAAoB,EAAE,0BAA0B;AACxD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,WAAW;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,WAAW;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,WAAW;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,WAAW;AAC/B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,UAAU;AAC7B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC,UAAU,CAAC;AAC9B;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,SAAS;AACvB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,SAAS;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,QAAQ,EAAE,CAAC;AACjB,QAAQ,QAAQ,EAAE,SAAS;AAC3B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;AACnF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,kBAAkB,EAAE,CAAC;AAC3B,QAAQ,MAAM,EAAE,0BAA0B;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM;AAChC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,SAAS,EAAE,cAAc;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,cAAc;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,cAAc;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,cAAc;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,UAAU;AAC1B,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM;AACnC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,KAAK,EAAE,UAAU;AACzB,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY;AACnF,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB;AAC1d,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,cAAc,EAAE,CAAC;AACvB,QAAQ,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,gBAAgB,EAAE,CAAC;AACzB,QAAQ,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM;AACzC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG;AACrC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,uBAAuB;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,UAAU,EAAE,uBAAuB;AAC3C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,WAAW,EAAE,uBAAuB;AAC5C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,YAAY,EAAE,CAAC;AACrB,QAAQ,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY;AACrD,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ;AACjC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,WAAW,EAAE,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,iBAAiB,EAAE,CAAC;AAC1B,QAAQ,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,KAAK,EAAE,CAAC;AACd,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO;AAC1C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,SAAS,EAAE,CAAC;AAClB,QAAQ,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM;AACvC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC,kBAAkB,CAAC;AACtC;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;AAC9C,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,aAAa,EAAE,CAAC;AACtB,QAAQ,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB;AACxG,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,EAAE,CAAC;AACb,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AACtC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,UAAU,EAAE,CAAC;AACnB,QAAQ,MAAM,EAAE,CAAC,QAAQ,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,iBAAiB;AAC1F,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,UAAU,EAAE;AACxC,OAAO,CAAC;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,EAAE,CAAC;AAC9B,QAAQ,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM;AAC9C,OAAO;AACP,KAAK;AACL,IAAI,sBAAsB,EAAE;AAC5B,MAAM,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC5C,MAAM,UAAU,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;AAClD,MAAM,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACrF,MAAM,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAClC,MAAM,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAClC,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AACvC,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzD,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACzD,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACtB,MAAM,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACtB,MAAM,WAAW,EAAE,CAAC,SAAS,CAAC;AAC9B,MAAM,YAAY,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAC;AACpG,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,kBAAkB,EAAE,CAAC,YAAY,CAAC;AACxC,MAAM,YAAY,EAAE,CAAC,YAAY,CAAC;AAClC,MAAM,aAAa,EAAE,CAAC,YAAY,CAAC;AACnC,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC;AACpC,MAAM,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AAC3C,MAAM,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AAC7M,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAC/C,MAAM,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AAChE,MAAM,UAAU,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AAClI,MAAM,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAChD,MAAM,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;AAChD,MAAM,cAAc,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AACtK,MAAM,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC5D,MAAM,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;AAC5D,MAAM,SAAS,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC;AACjE,MAAM,gBAAgB,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC;AAClF,MAAM,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AAC1H,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AAC1H,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7C,MAAM,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;AAC/C,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;AAC1B,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;AAC1B,MAAM,UAAU,EAAE,CAAC,OAAO;AAC1B,KAAK;AACL,IAAI,8BAA8B,EAAE;AACpC,MAAM,WAAW,EAAE,CAAC,SAAS;AAC7B,KAAK;AACL,IAAI,uBAAuB,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW;AACrK,GAAG;AACH,CAAC;AAsDD,MAAM,OAAO,gBAAgB,mBAAmB,CAAC,gBAAgB,CAAC;;ACr9F5D,SAAU,EAAE,CAAC,GAAG,MAAoB,EAAA;AACxC,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B;;ACDA,SAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B,EAAA;IACnE,QACEX,eAACY,YAAW,EAAA,EACV,IAAI,EAAC,QAAQ,EAAA,YAAA,EACF,SAAS,EACpB,SAAS,EAAE,EAAE,CAAC,sCAAsC,EAAE,SAAS,CAAC,EAAA,GAC5D,KAAK,EAAA,CACT;AAEN;;ACJO,MAAM,YAAY,GAAgC,CAAC,EACxD,QAAQ,EACR,mBAAmB,EACnB,kBAAkB,GACnB,KAAI;AACH,IAAA,MAAM,EACJ,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,GAAG,cAAc,EAAE;IAEpB,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,QACEZ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oDAAoD,EAAA,QAAA,EACjEA,cAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,yBAAyB,EAAA,CAAG,EAAA,CAC3C;IAEV;AAEA,IAAA,IAAI,CAAC,eAAe,EAAE,EAAE;AACtB,QAAA,SAAS,EAAE;AACX,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,IACE,mBAAmB;AACnB,QAAA,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EACzD;AACA,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,IACE,kBAAkB;AAClB,QAAA,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,EACvD;AACA,QAAA,QACEa,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oDAAoD,EAAA,QAAA,EAAA,CACjEb,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,qEAAA,EAAA,CAE7B,EACLA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,CAEO,CAAA,EAAA,CACH;IAEV;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACnDO,MAAM,kBAAkB,GAAmC,CAAC,EACjE,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,GACpB,KAAI;IACH,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE;AAExD,IAAA,IACE,mBAAmB;AACnB,QAAA,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EACzD;AACA,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,IACE,kBAAkB;AAClB,QAAA,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,EACvD;AACA,QAAA,OAAOA,uCAAK;IACd;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACtBO,MAAM,eAAe,GAAmC,CAAC,EAC9D,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,GACpB,KAAI;AACH,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE;AAE1C,IAAA,IACE,mBAAmB;AACnB,QAAA,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,EACzD;AACA,QAAA,OAAOA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAK,mBAAmB,IAAI,cAAc,GAAM;IACzD;AAEA,IAAA,OAAO,QAAQ;AACjB;;ACvBA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;;;;;ACzBYc;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC5B,CAAC,EADWA,wBAAgB,KAAhBA,wBAAgB,GAAA,EAAA,CAAA,CAAA;;ACAhBC;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC3B,CAAC,EADWA,uBAAe,KAAfA,uBAAe,GAAA,EAAA,CAAA,CAAA;;ACAfC;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,mBAAiC;AACnC,CAAC,EAJWA,0BAAkB,KAAlBA,0BAAkB,GAAA,EAAA,CAAA,CAAA;AAMlBC;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACrC,CAAC,EAJWA,kBAAU,KAAVA,kBAAU,GAAA,EAAA,CAAA,CAAA;;;;;;ACNtB;;;AAGG;;;;;;;;;;;;;;;;;;","x_google_ignoreList":[0,2,3,4,5,17,18,19,20,21,22,28]}
|