UNPKG

@authup/core-kit

Version:

Package containing global constants, types & interfaces.

1 lines 30.2 kB
{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/domains/client/error.ts","../src/helpers/name-valid.ts","../src/domains/client/helpers.ts","../src/domains/identity-provider/constants.ts","../src/domains/identity-provider/utils.ts","../src/domains/identity-provider/preset/constants.ts","../src/domains/identity-provider/preset/utils.ts","../src/domains/permission/constants.ts","../src/domains/permission/helpers.ts","../src/domains/policy/helpers.ts","../src/domains/realm/constants.ts","../src/domains/realm/helpers.ts","../src/domains/robot/helpers.ts","../src/domains/robot/error.ts","../src/domains/role/constants.ts","../src/domains/role/utils.ts","../src/domains/scope/constants.ts","../src/domains/scope/utils.ts","../src/domains/user/error.ts","../src/domains/user/utils.ts","../src/domains/user/validator.ts","../src/domains/contstants.ts","../src/domains/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ValidatorGroup {\n CREATE = 'create',\n UPDATE = 'update',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class ClientError extends AuthupError {\n static credentialsInvalid() {\n return new ClientError({\n code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n message: 'The client credentials are invalid.',\n });\n }\n\n static notFound() {\n return new ClientError({\n code: ErrorCode.ENTITY_NOT_FOUND,\n message: 'The client account was not found.',\n });\n }\n\n static inactive() {\n return new ClientError({\n code: ErrorCode.ENTITY_INACTIVE,\n message: 'The client account is inactive.',\n });\n }\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError } from '@authup/errors';\n\nexport type NameValidOptions = {\n throwOnFailure?: boolean;\n};\nexport function isNameValid(input: string, options: NameValidOptions = {}): boolean {\n if (/\\s/g.test(input)) {\n if (options.throwOnFailure) {\n throw new AuthupError('Whitespace character is not allowed.');\n }\n\n return false;\n }\n\n if (/^[A-Za-z0-9-_.]+$/.test(input)) {\n return true;\n }\n\n if (options.throwOnFailure) {\n throw new AuthupError('Only the characters [A-Za-z0-9-_.]+ are allowed.');\n }\n\n return false;\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isClientNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum IdentityProviderProtocol {\n LDAP = 'ldap',\n OAUTH2 = 'oauth2',\n OIDC = 'oidc',\n}\n\nexport enum IdentityProviderMappingSyncMode {\n /**\n * Synchronize on initial user login.\n */\n ONCE = 'once',\n /**\n * Synchronize on every user login.\n */\n ALWAYS = 'always',\n /**\n * Synchronize based on idp configuration.\n */\n INHERIT = 'inherit',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function buildIdentityProviderAuthorizeCallbackPath(id: string | number) {\n return `/identity-providers/${id}/authorize-callback`;\n}\n\nexport function buildIdentityProviderAuthorizePath(id: string | number) {\n return `/identity-providers/${id}/authorize-url`;\n}\n\nexport function isIdentityProviderNameValid(input: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(input, options);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum IdentityProviderPreset {\n FACEBOOK = 'facebook',\n GITHUB = 'github',\n GITLAB = 'gitlab',\n GOOGLE = 'google',\n PAYPAL = 'paypal',\n INSTAGRAM = 'instagram',\n STACKOVERFLOW = 'stackoverflow',\n TWITTER = 'twitter',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { IdentityProviderProtocol } from '../constants';\nimport { IdentityProviderPreset } from './constants';\n\nexport function getIdentityProviderProtocolForPreset(\n id: `${IdentityProviderPreset}`,\n) : `${IdentityProviderProtocol}` | undefined {\n switch (id) {\n case IdentityProviderPreset.GITHUB:\n case IdentityProviderPreset.GITLAB:\n case IdentityProviderPreset.GOOGLE:\n case IdentityProviderPreset.FACEBOOK:\n case IdentityProviderPreset.INSTAGRAM:\n case IdentityProviderPreset.PAYPAL:\n case IdentityProviderPreset.STACKOVERFLOW:\n case IdentityProviderPreset.TWITTER:\n return IdentityProviderProtocol.OIDC;\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PermissionName {\n CLIENT_CREATE = 'client_create',\n CLIENT_DELETE = 'client_delete',\n CLIENT_UPDATE = 'client_update',\n CLIENT_READ = 'client_read',\n CLIENT_SELF_MANAGE = 'client_self_manage',\n\n CLIENT_PERMISSION_CREATE = 'client_permission_create',\n CLIENT_PERMISSION_DELETE = 'client_permission_delete',\n CLIENT_PERMISSION_READ = 'client_permission_read',\n\n CLIENT_ROLE_CREATE = 'client_role_create',\n CLIENT_ROLE_DELETE = 'client_role_delete',\n CLIENT_ROLE_UPDATE = 'client_role_update',\n CLIENT_ROLE_READ = 'client_role_read',\n\n CLIENT_SCOPE_CREATE = 'client_scope_create',\n CLIENT_SCOPE_DELETE = 'client_scope_delete',\n\n IDENTITY_PROVIDER_CREATE = 'identity_provider_create',\n IDENTITY_PROVIDER_DELETE = 'identity_provider_delete',\n IDENTITY_PROVIDER_UPDATE = 'identity_provider_update',\n IDENTITY_PROVIDER_READ = 'identity_provider_read',\n\n IDENTITY_PROVIDER_ROLE_CREATE = 'identity_provider_role_create',\n IDENTITY_PROVIDER_ROLE_DELETE = 'identity_provider_role_delete',\n IDENTITY_PROVIDER_ROLE_UPDATE = 'identity_provider_role_update',\n\n PERMISSION_CREATE = 'permission_create',\n PERMISSION_DELETE = 'permission_delete',\n PERMISSION_UPDATE = 'permission_update',\n PERMISSION_READ = 'permission_read',\n\n REALM_CREATE = 'realm_create',\n REALM_DELETE = 'realm_delete',\n REALM_UPDATE = 'realm_update',\n REALM_READ = 'realm_read',\n\n ROBOT_CREATE = 'robot_create',\n ROBOT_DELETE = 'robot_delete',\n ROBOT_UPDATE = 'robot_update',\n ROBOT_READ = 'robot_read',\n ROBOT_SELF_MANAGE = 'robot_self_manage',\n\n ROBOT_PERMISSION_CREATE = 'robot_permission_create',\n ROBOT_PERMISSION_DELETE = 'robot_permission_delete',\n ROBOT_PERMISSION_READ = 'robot_permission_read',\n\n ROBOT_ROLE_CREATE = 'robot_role_create',\n ROBOT_ROLE_DELETE = 'robot_role_delete',\n ROBOT_ROLE_UPDATE = 'robot_role_update',\n ROBOT_ROLE_READ = 'robot_role_read',\n\n ROLE_CREATE = 'role_create',\n ROLE_DELETE = 'role_delete',\n ROLE_UPDATE = 'role_update',\n ROLE_READ = 'role_read',\n\n ROLE_PERMISSION_CREATE = 'role_permission_create',\n ROLE_PERMISSION_DELETE = 'role_permission_delete',\n ROLE_PERMISSION_READ = 'role_permission_read',\n\n SCOPE_CREATE = 'scope_create',\n SCOPE_DELETE = 'scope_delete',\n SCOPE_UPDATE = 'scope_update',\n SCOPE_READ = 'scope_read',\n\n USER_CREATE = 'user_create',\n USER_DELETE = 'user_delete',\n USER_UPDATE = 'user_update',\n USER_READ = 'user_read',\n USER_SELF_MANAGE = 'user_self_update',\n\n USER_PERMISSION_CREATE = 'user_permission_create',\n USER_PERMISSION_DELETE = 'user_permission_delete',\n USER_PERMISSION_READ = 'user_permission_read',\n\n USER_ROLE_CREATE = 'user_role_create',\n USER_ROLE_DELETE = 'user_role_delete',\n USER_ROLE_UPDATE = 'user_role_update',\n USER_ROLE_READ = 'user_role_read',\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isPermissionNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isPolicyNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const REALM_MASTER_NAME = 'master';\nexport const REALM_NAME_REGEX = /^[a-zA-Z0-9_]{3,128}$/;\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isRealmNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isRobotNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class RobotError extends AuthupError {\n static credentialsInvalid() {\n return new RobotError({\n code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n message: 'The robot credentials are invalid.',\n });\n }\n\n static notFound() {\n return new RobotError({\n code: ErrorCode.ENTITY_NOT_FOUND,\n message: 'The robot account was not found.',\n });\n }\n\n static inactive() {\n return new RobotError({\n code: ErrorCode.ENTITY_INACTIVE,\n message: 'The robot account is inactive.',\n });\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const ROLE_ADMIN_NAME = 'admin';\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isRoleNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ScopeName {\n /**\n * Full permissions\n */\n GLOBAL = 'global',\n\n /**\n * for Openid usage (id-token)\n */\n OPEN_ID = 'openid',\n\n /**\n * /users/@me with email (userinfo & id-token)\n */\n EMAIL = 'email',\n\n /**\n * Roles array (id-token)\n */\n ROLES = 'roles',\n\n /**\n * /users/@me without email (userinfo & id-token)\n */\n IDENTITY = 'identity',\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isScopeNameValid(name: string, options: NameValidOptions = {}) : boolean {\n return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class UserError extends AuthupError {\n static credentialsInvalid() {\n return new UserError({\n code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n message: 'The user credentials are invalid.',\n });\n }\n\n static notFound() {\n return new UserError({\n code: ErrorCode.ENTITY_NOT_FOUND,\n message: 'The user account was not found.',\n });\n }\n\n static inactive() {\n return new UserError({\n code: ErrorCode.ENTITY_INACTIVE,\n message: 'The user account is inactive.',\n });\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError } from '@authup/errors';\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isUserNameValid(input: string, options: NameValidOptions = {}) : boolean {\n if (!isNameValid(input, options)) return false;\n\n input = input.toLowerCase();\n\n const isReservedName = [\n 'bot',\n 'system',\n 'everyone',\n 'here',\n ].some((el) => input.startsWith(el));\n\n if (isReservedName) {\n if (options.throwOnFailure) {\n throw new AuthupError(`${input} is a reserved name.`);\n }\n\n return false;\n }\n\n return true;\n}\n\nexport function isValidUserEmail(input: string) {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(input);\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createValidator } from '@validup/adapter-zod';\nimport { Container } from 'validup';\nimport zod from 'zod';\nimport { ValidatorGroup } from '../../constants';\nimport type { User } from './entity';\nimport { isUserNameValid } from './utils';\n\nexport class UserValidator extends Container<User> {\n protected initialize() {\n super.initialize();\n\n const nameValidator = createValidator(\n zod\n .string()\n .min(3)\n .max(128)\n .check((ctx) => {\n try {\n isUserNameValid(ctx.value, { throwOnFailure: true });\n } catch (e) {\n ctx.issues.push({\n input: ctx.value,\n code: 'custom',\n message: e instanceof Error ? e.message : 'The user name is not valid.',\n });\n }\n }),\n );\n\n this.mount(\n 'name',\n { group: ValidatorGroup.CREATE },\n nameValidator,\n );\n this.mount(\n 'name',\n { group: ValidatorGroup.UPDATE, optional: true },\n nameValidator,\n );\n\n this.mount(\n 'name_locked',\n { optional: true },\n createValidator(zod.boolean()),\n );\n\n // ----------------------------------------------\n\n this.mount(\n 'first_name',\n { optional: true },\n createValidator(zod.string().min(3).max(128).nullable()),\n );\n\n this.mount(\n 'last_name',\n { optional: true },\n createValidator(zod.string().min(3).max(128).nullable()),\n );\n\n // ----------------------------------------------\n\n this.mount(\n 'display_name',\n { optional: true },\n createValidator(zod.string().min(3).max(256).nullable()),\n );\n\n // ----------------------------------------------\n\n this.mount(\n 'email',\n { optional: true },\n createValidator(zod.string().email().nullable()),\n );\n\n // ----------------------------------------------\n\n this.mount(\n 'password',\n { optional: true },\n createValidator(zod.string().min(3).max(512)),\n );\n\n // ----------------------------------------------\n\n this.mount(\n 'active',\n { optional: true },\n createValidator(zod.boolean()),\n );\n\n this.mount(\n 'name_locked',\n { optional: true },\n createValidator(zod.boolean()),\n );\n\n this.mount(\n 'realm_id',\n { group: ValidatorGroup.CREATE, optional: true },\n createValidator(zod.string().uuid()),\n );\n\n this.mount(\n 'status',\n { optional: true },\n createValidator(zod.string().min(3).max(256).nullable()),\n );\n\n this.mount(\n 'status_message',\n { optional: true },\n createValidator(zod.string().min(3).max(256).nullable()),\n );\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum EntityType {\n CLIENT = 'client',\n CLIENT_PERMISSION = 'clientPermission',\n CLIENT_ROLE = 'clientRole',\n CLIENT_SCOPE = 'clientScope',\n IDENTITY_PROVIDER = 'identityProvider',\n IDENTITY_PROVIDER_ACCOUNT = 'identityProviderAccount',\n IDENTITY_PROVIDER_ATTRIBUTE = 'identityProviderAttribute',\n IDENTITY_PROVIDER_ROLE_MAPPING = 'identityProviderRoleMapping',\n POLICY = 'policy',\n POLICY_ATTRIBUTE = 'policyAttribute',\n PERMISSION = 'permission',\n REALM = 'realm',\n ROBOT = 'robot',\n ROBOT_PERMISSION = 'robotPermission',\n ROBOT_ROLE = 'robotRole',\n ROLE = 'role',\n ROLE_ATTRIBUTE = 'roleAttribute',\n ROLE_PERMISSION = 'rolePermission',\n SCOPE = 'scope', // todo: add\n USER = 'user',\n USER_ATTRIBUTE = 'userAttribute',\n USER_PERMISSION = 'userPermission',\n USER_ROLE = 'userRole',\n}\n\nexport enum EntityDefaultEventName {\n CREATED = 'created',\n DELETED = 'deleted',\n UPDATED = 'updated',\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function buildEntityChannelName(entity: string, id?: string | number) {\n return id ? `${entity}:${id}` : entity;\n}\n\nexport function buildEntityNamespaceName(id: string) {\n return `/realm#${id}`;\n}\n"],"names":["ValidatorGroup","ClientError","AuthupError","credentialsInvalid","code","ErrorCode","ENTITY_CREDENTIALS_INVALID","message","notFound","ENTITY_NOT_FOUND","inactive","ENTITY_INACTIVE","isNameValid","input","options","test","throwOnFailure","isClientNameValid","name","IdentityProviderProtocol","IdentityProviderMappingSyncMode","buildIdentityProviderAuthorizeCallbackPath","id","buildIdentityProviderAuthorizePath","isIdentityProviderNameValid","IdentityProviderPreset","getIdentityProviderProtocolForPreset","GITHUB","GITLAB","GOOGLE","FACEBOOK","INSTAGRAM","PAYPAL","STACKOVERFLOW","TWITTER","OIDC","undefined","PermissionName","isPermissionNameValid","isPolicyNameValid","REALM_MASTER_NAME","REALM_NAME_REGEX","isRealmNameValid","isRobotNameValid","RobotError","ROLE_ADMIN_NAME","isRoleNameValid","ScopeName","isScopeNameValid","UserError","isUserNameValid","toLowerCase","isReservedName","some","el","startsWith","isValidUserEmail","UserValidator","Container","initialize","nameValidator","createValidator","zod","string","min","max","check","ctx","value","e","issues","push","Error","mount","group","CREATE","UPDATE","optional","boolean","nullable","email","uuid","EntityType","EntityDefaultEventName","buildEntityChannelName","entity","buildEntityNamespaceName"],"mappings":";;;;;AAAA;;;;;IAOO,IAAKA,cAAAA,iBAAAA,SAAAA,cAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,cAAAA;AAGX,CAAA,CAAA,EAAA;;ACDM,MAAMC,WAAAA,SAAoBC,WAAAA,CAAAA;AAC7B,IAAA,OAAOC,kBAAAA,GAAqB;AACxB,QAAA,OAAO,IAAIF,WAAAA,CAAY;AACnBG,YAAAA,IAAAA,EAAMC,UAAUC,0BAA0B;YAC1CC,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,OAAOC,QAAAA,GAAW;AACd,QAAA,OAAO,IAAIP,WAAAA,CAAY;AACnBG,YAAAA,IAAAA,EAAMC,UAAUI,gBAAgB;YAChCF,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,OAAOG,QAAAA,GAAW;AACd,QAAA,OAAO,IAAIT,WAAAA,CAAY;AACnBG,YAAAA,IAAAA,EAAMC,UAAUM,eAAe;YAC/BJ,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AACJ;;AClBO,SAASK,WAAAA,CAAYC,KAAa,EAAEC,OAAAA,GAA4B,EAAE,EAAA;IACrE,IAAI,KAAA,CAAMC,IAAI,CAACF,KAAAA,CAAAA,EAAQ;QACnB,IAAIC,OAAAA,CAAQE,cAAc,EAAE;AACxB,YAAA,MAAM,IAAId,WAAAA,CAAY,sCAAA,CAAA;AAC1B,QAAA;QAEA,OAAO,KAAA;AACX,IAAA;IAEA,IAAI,mBAAA,CAAoBa,IAAI,CAACF,KAAAA,CAAAA,EAAQ;QACjC,OAAO,IAAA;AACX,IAAA;IAEA,IAAIC,OAAAA,CAAQE,cAAc,EAAE;AACxB,QAAA,MAAM,IAAId,WAAAA,CAAY,kDAAA,CAAA;AAC1B,IAAA;IAEA,OAAO,KAAA;AACX;;ACpBO,SAASe,iBAAAA,CAAkBC,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AAC1E,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACZA;;;;;IAOO,IAAKK,wBAAAA,iBAAAA,SAAAA,wBAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,wBAAAA;AAIX,CAAA,CAAA,EAAA;AAEM,IAAA,+BAAKC,iBAAAA,SAAAA,+BAAAA,EAAAA;AACR;;AAEC,QAAA,+BAAA,CAAA,MAAA,CAAA,GAAA,MAAA;AAED;;AAEC,QAAA,+BAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAED;;AAEC,QAAA,+BAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAXOA,IAAAA,OAAAA,+BAAAA;AAaX,CAAA,CAAA,EAAA;;AChBM,SAASC,2CAA2CC,EAAmB,EAAA;AAC1E,IAAA,OAAO,CAAC,oBAAoB,EAAEA,EAAAA,CAAG,mBAAmB,CAAC;AACzD;AAEO,SAASC,mCAAmCD,EAAmB,EAAA;AAClE,IAAA,OAAO,CAAC,oBAAoB,EAAEA,EAAAA,CAAG,cAAc,CAAC;AACpD;AAEO,SAASE,2BAAAA,CAA4BX,KAAa,EAAEC,OAAAA,GAA4B,EAAE,EAAA;AACrF,IAAA,OAAOF,YAAYC,KAAAA,EAAOC,OAAAA,CAAAA;AAC9B;;ACpBA;;;;;IAOO,IAAKW,sBAAAA,iBAAAA,SAAAA,sBAAAA,EAAAA;;;;;;;;;AAAAA,IAAAA,OAAAA,sBAAAA;AASX,CAAA,CAAA,EAAA;;ACNM,SAASC,qCACZJ,EAA+B,EAAA;IAE/B,OAAQA,EAAAA;AACJ,QAAA,KAAKG,uBAAuBE,MAAM;AAClC,QAAA,KAAKF,uBAAuBG,MAAM;AAClC,QAAA,KAAKH,uBAAuBI,MAAM;AAClC,QAAA,KAAKJ,uBAAuBK,QAAQ;AACpC,QAAA,KAAKL,uBAAuBM,SAAS;AACrC,QAAA,KAAKN,uBAAuBO,MAAM;AAClC,QAAA,KAAKP,uBAAuBQ,aAAa;AACzC,QAAA,KAAKR,uBAAuBS,OAAO;AAC/B,YAAA,OAAOf,yBAAyBgB,IAAI;AAC5C;IAEA,OAAOC,SAAAA;AACX;;AC1BA;;;;;IAOO,IAAKC,cAAAA,iBAAAA,SAAAA,cAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,cAAAA;AAiFX,CAAA,CAAA,EAAA;;AC9EM,SAASC,qBAAAA,CAAsBpB,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AAC9E,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACFO,SAASyB,iBAAAA,CAAkBrB,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AAC1E,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACZA;;;;;IAOO,MAAM0B,iBAAAA,GAAoB;AAC1B,MAAMC,mBAAmB;;ACEzB,SAASC,gBAAAA,CAAiBxB,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AACzE,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACFO,SAAS6B,gBAAAA,CAAiBzB,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AACzE,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACHO,MAAM8B,UAAAA,SAAmB1C,WAAAA,CAAAA;AAC5B,IAAA,OAAOC,kBAAAA,GAAqB;AACxB,QAAA,OAAO,IAAIyC,UAAAA,CAAW;AAClBxC,YAAAA,IAAAA,EAAMC,UAAUC,0BAA0B;YAC1CC,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,OAAOC,QAAAA,GAAW;AACd,QAAA,OAAO,IAAIoC,UAAAA,CAAW;AAClBxC,YAAAA,IAAAA,EAAMC,UAAUI,gBAAgB;YAChCF,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,OAAOG,QAAAA,GAAW;AACd,QAAA,OAAO,IAAIkC,UAAAA,CAAW;AAClBxC,YAAAA,IAAAA,EAAMC,UAAUM,eAAe;YAC/BJ,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AACJ;;AC9BA;;;;;IAOO,MAAMsC,eAAAA,GAAkB;;ACGxB,SAASC,eAAAA,CAAgB5B,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AACxE,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACZA;;;;;IAOO,IAAKiC,SAAAA,iBAAAA,SAAAA,SAAAA,EAAAA;AACR;;AAEC,QAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAA;AAGD;;AAEC,QAAA,SAAA,CAAA,SAAA,CAAA,GAAA,QAAA;AAGD;;AAEC,QAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAGD;;AAEC,QAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAA;AAGD;;AAEC,QAAA,SAAA,CAAA,UAAA,CAAA,GAAA,UAAA;AAvBOA,IAAAA,OAAAA,SAAAA;AAyBX,CAAA,CAAA,EAAA;;ACtBM,SAASC,gBAAAA,CAAiB9B,IAAY,EAAEJ,OAAAA,GAA4B,EAAE,EAAA;AACzE,IAAA,OAAOF,YAAYM,IAAAA,EAAMJ,OAAAA,CAAAA;AAC7B;;ACHO,MAAMmC,SAAAA,SAAkB/C,WAAAA,CAAAA;AAC3B,IAAA,OAAOC,kBAAAA,GAAqB;AACxB,QAAA,OAAO,IAAI8C,SAAAA,CAAU;AACjB7C,YAAAA,IAAAA,EAAMC,UAAUC,0BAA0B;YAC1CC,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,OAAOC,QAAAA,GAAW;AACd,QAAA,OAAO,IAAIyC,SAAAA,CAAU;AACjB7C,YAAAA,IAAAA,EAAMC,UAAUI,gBAAgB;YAChCF,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AAEA,IAAA,OAAOG,QAAAA,GAAW;AACd,QAAA,OAAO,IAAIuC,SAAAA,CAAU;AACjB7C,YAAAA,IAAAA,EAAMC,UAAUM,eAAe;YAC/BJ,OAAAA,EAAS;AACb,SAAA,CAAA;AACJ,IAAA;AACJ;;ACnBO,SAAS2C,eAAAA,CAAgBrC,KAAa,EAAEC,OAAAA,GAA4B,EAAE,EAAA;AACzE,IAAA,IAAI,CAACF,WAAAA,CAAYC,KAAAA,EAAOC,OAAAA,CAAAA,EAAU,OAAO,KAAA;AAEzCD,IAAAA,KAAAA,GAAQA,MAAMsC,WAAW,EAAA;AAEzB,IAAA,MAAMC,cAAAA,GAAiB;AACnB,QAAA,KAAA;AACA,QAAA,QAAA;AACA,QAAA,UAAA;AACA,QAAA;AACH,KAAA,CAACC,IAAI,CAAC,CAACC,EAAAA,GAAOzC,KAAAA,CAAM0C,UAAU,CAACD,EAAAA,CAAAA,CAAAA;AAEhC,IAAA,IAAIF,cAAAA,EAAgB;QAChB,IAAItC,OAAAA,CAAQE,cAAc,EAAE;AACxB,YAAA,MAAM,IAAId,WAAAA,CAAY,CAAA,EAAGW,KAAAA,CAAM,oBAAoB,CAAC,CAAA;AACxD,QAAA;QAEA,OAAO,KAAA;AACX,IAAA;IAEA,OAAO,IAAA;AACX;AAEO,SAAS2C,iBAAiB3C,KAAa,EAAA;IAC1C,OAAO,4BAAA,CAA6BE,IAAI,CAACF,KAAAA,CAAAA;AAC7C;;ACtBO,MAAM4C,aAAAA,SAAsBC,SAAAA,CAAAA;IACrBC,UAAAA,GAAa;AACnB,QAAA,KAAK,CAACA,UAAAA,EAAAA;AAEN,QAAA,MAAMC,aAAAA,GAAgBC,eAAAA,CAClBC,GAAAA,CACKC,MAAM,EAAA,CACNC,GAAG,CAAC,CAAA,CAAA,CACJC,GAAG,CAAC,GAAA,CAAA,CACJC,KAAK,CAAC,CAACC,GAAAA,GAAAA;YACJ,IAAI;gBACAjB,eAAAA,CAAgBiB,GAAAA,CAAIC,KAAK,EAAE;oBAAEpD,cAAAA,EAAgB;AAAK,iBAAA,CAAA;AACtD,YAAA,CAAA,CAAE,OAAOqD,CAAAA,EAAG;gBACRF,GAAAA,CAAIG,MAAM,CAACC,IAAI,CAAC;AACZ1D,oBAAAA,KAAAA,EAAOsD,IAAIC,KAAK;oBAChBhE,IAAAA,EAAM,QAAA;AACNG,oBAAAA,OAAAA,EAAS8D,CAAAA,YAAaG,KAAAA,GAAQH,CAAAA,CAAE9D,OAAO,GAAG;AAC9C,iBAAA,CAAA;AACJ,YAAA;AACJ,QAAA,CAAA,CAAA,CAAA;QAGR,IAAI,CAACkE,KAAK,CACN,MAAA,EACA;AAAEC,YAAAA,KAAAA,EAAO1E,eAAe2E;SAAO,EAC/Bf,aAAAA,CAAAA;QAEJ,IAAI,CAACa,KAAK,CACN,MAAA,EACA;AAAEC,YAAAA,KAAAA,EAAO1E,eAAe4E,MAAM;YAAEC,QAAAA,EAAU;SAAK,EAC/CjB,aAAAA,CAAAA;QAGJ,IAAI,CAACa,KAAK,CACN,aAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,IAAIgB,OAAO,EAAA,CAAA,CAAA;;QAK/B,IAAI,CAACL,KAAK,CACN,YAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,GAAA,CAAA,CAAKc,QAAQ,EAAA,CAAA,CAAA;QAGzD,IAAI,CAACN,KAAK,CACN,WAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,GAAA,CAAA,CAAKc,QAAQ,EAAA,CAAA,CAAA;;QAKzD,IAAI,CAACN,KAAK,CACN,cAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,GAAA,CAAA,CAAKc,QAAQ,EAAA,CAAA,CAAA;;QAKzD,IAAI,CAACN,KAAK,CACN,OAAA,EACA;YAAEI,QAAAA,EAAU;AAAK,SAAA,EACjBhB,gBAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGiB,KAAK,GAAGD,QAAQ,EAAA,CAAA,CAAA;;QAKjD,IAAI,CAACN,KAAK,CACN,UAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,IAAIC,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,GAAA,CAAA,CAAA,CAAA;;QAK5C,IAAI,CAACQ,KAAK,CACN,QAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,IAAIgB,OAAO,EAAA,CAAA,CAAA;QAG/B,IAAI,CAACL,KAAK,CACN,aAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,IAAIgB,OAAO,EAAA,CAAA,CAAA;QAG/B,IAAI,CAACL,KAAK,CACN,UAAA,EACA;AAAEC,YAAAA,KAAAA,EAAO1E,eAAe2E,MAAM;YAAEE,QAAAA,EAAU;AAAK,SAAA,EAC/ChB,eAAAA,CAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGkB,IAAI,EAAA,CAAA,CAAA;QAGrC,IAAI,CAACR,KAAK,CACN,QAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,GAAA,CAAA,CAAKc,QAAQ,EAAA,CAAA,CAAA;QAGzD,IAAI,CAACN,KAAK,CACN,gBAAA,EACA;YAAEI,QAAAA,EAAU;SAAK,EACjBhB,eAAAA,CAAgBC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,GAAA,CAAA,CAAKc,QAAQ,EAAA,CAAA,CAAA;AAE7D,IAAA;AACJ;;AC3HA;;;;;IAOO,IAAKG,UAAAA,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,UAAAA;AAwBX,CAAA,CAAA,EAAA;AAEM,IAAA,sBAAKC,iBAAAA,SAAAA,sBAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,sBAAAA;AAIX,CAAA,CAAA,EAAA;;ACrCD;;;;;AAKC,IAEM,SAASC,sBAAAA,CAAuBC,MAAc,EAAE/D,EAAoB,EAAA;AACvE,IAAA,OAAOA,KAAK,CAAA,EAAG+D,MAAAA,CAAO,CAAC,EAAE/D,IAAI,GAAG+D,MAAAA;AACpC;AAEO,SAASC,yBAAyBhE,EAAU,EAAA;IAC/C,OAAO,CAAC,OAAO,EAAEA,EAAAA,CAAAA,CAAI;AACzB;;;;"}