likec4 1.47.0 → 1.49.0
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/LICENSE +1 -1
- package/README.md +11 -1
- package/__app__/src/const.js +0 -25
- package/__app__/src/fonts.css +1 -1
- package/__app__/src/likec4.js +10947 -8598
- package/__app__/src/main.js +27 -2041
- package/__app__/src/routes/index.js +250 -0
- package/__app__/src/routes/projects.js +189 -0
- package/__app__/src/routes/single.js +1525 -0
- package/__app__/src/style.css +1 -1
- package/__app__/src/vendors.js +20346 -11811
- package/__app__/src/webcomponent.js +1 -1
- package/config/schema.json +211 -197
- package/dist/THIRD-PARTY-LICENSES.md +1739 -0
- package/dist/_chunks/GraphvizBinaryAdapter.mjs +72 -0
- package/dist/_chunks/filenames.mjs +14 -0
- package/dist/_chunks/index.d.mts +584 -0
- package/dist/_chunks/index2.d.mts +3442 -0
- package/dist/_chunks/libs/@chevrotain/gast.mjs +1 -0
- package/dist/_chunks/libs/@chevrotain/regexp-to-ast.mjs +9 -0
- package/dist/_chunks/libs/@chevrotain/utils.mjs +1 -0
- package/dist/_chunks/libs/@hono/mcp.mjs +34 -0
- package/dist/_chunks/libs/@hono/node-server.mjs +1 -0
- package/dist/_chunks/libs/@logtape/logtape.d.mts +741 -0
- package/dist/_chunks/libs/@logtape/logtape.mjs +6 -0
- package/dist/_chunks/libs/@lume/kiwi.mjs +1 -0
- package/dist/_chunks/libs/@modelcontextprotocol/sdk.d.mts +8625 -0
- package/dist/_chunks/libs/@modelcontextprotocol/sdk.mjs +12 -0
- package/dist/_chunks/libs/@msgpack/msgpack.mjs +1 -0
- package/dist/_chunks/libs/@nanostores/react.d.mts +258 -0
- package/dist/_chunks/libs/@nanostores/react.mjs +1 -0
- package/dist/_chunks/libs/@smithy/util-base64.mjs +1 -0
- package/dist/_chunks/libs/ajv.mjs +1 -0
- package/dist/_chunks/libs/atomically.mjs +1 -0
- package/dist/_chunks/libs/birpc.mjs +1 -0
- package/dist/_chunks/libs/chevrotain-allstar.mjs +2 -0
- package/dist/_chunks/libs/chevrotain.mjs +58 -0
- package/dist/_chunks/libs/conf.mjs +1 -0
- package/dist/_chunks/libs/defu.mjs +1 -0
- package/dist/_chunks/libs/esm-env.mjs +1 -0
- package/dist/_chunks/libs/eventemitter3.mjs +1 -0
- package/dist/_chunks/libs/fast-equals.mjs +1 -0
- package/dist/_chunks/libs/find-up-simple.mjs +1 -0
- package/dist/_chunks/libs/get-port.mjs +1 -0
- package/dist/_chunks/libs/is-docker.mjs +1 -0
- package/dist/_chunks/libs/is-error-instance.mjs +1 -0
- package/dist/_chunks/libs/is-inside-container.mjs +1 -0
- package/dist/_chunks/libs/is-plain-obj.mjs +1 -0
- package/dist/_chunks/libs/isexe.mjs +1 -0
- package/dist/_chunks/libs/json5.mjs +14 -0
- package/dist/_chunks/libs/khroma.mjs +1 -0
- package/dist/_chunks/libs/ky.mjs +3 -0
- package/dist/_chunks/libs/langium.d.mts +12099 -0
- package/dist/_chunks/libs/langium.mjs +32 -0
- package/dist/_chunks/libs/merge-error-cause.mjs +2 -0
- package/dist/_chunks/libs/nanostores.d.mts +63 -0
- package/dist/_chunks/libs/nanostores.mjs +1 -0
- package/dist/_chunks/libs/p-limit.mjs +1 -0
- package/dist/_chunks/libs/p-queue.mjs +1 -0
- package/dist/_chunks/libs/package-manager-detector.mjs +1 -0
- package/dist/_chunks/libs/package-up.mjs +1 -0
- package/dist/_chunks/libs/parse-ms.mjs +1 -0
- package/dist/_chunks/libs/pathe.mjs +1 -0
- package/dist/_chunks/libs/picomatch.mjs +1 -0
- package/dist/_chunks/libs/pretty-ms.mjs +1 -0
- package/dist/_chunks/libs/remeda.mjs +1 -0
- package/dist/_chunks/libs/safe-stringify.mjs +1 -0
- package/dist/_chunks/libs/strip-indent.mjs +1 -0
- package/dist/_chunks/libs/tinyrainbow.mjs +1 -0
- package/dist/_chunks/libs/ts-graphviz.d.mts +10 -0
- package/dist/_chunks/libs/ts-graphviz.mjs +4 -0
- package/dist/_chunks/libs/ufo.mjs +1 -0
- package/dist/_chunks/libs/which.mjs +1 -0
- package/dist/_chunks/libs/word-wrap.mjs +12 -0
- package/dist/_chunks/node.mjs +481 -0
- package/dist/_chunks/plugin.mjs +322 -0
- package/dist/_chunks/rolldown-runtime.mjs +1 -0
- package/dist/_chunks/sequence-view.mjs +1 -0
- package/dist/cli/index.d.mts +1 -2
- package/dist/cli/index.mjs +130 -432
- package/dist/config/index.d.mts +3 -6
- package/dist/config/index.mjs +1 -1
- package/dist/index.d.mts +144 -162
- package/dist/index.mjs +1 -1
- package/dist/model/builder.d.mts +1 -1
- package/dist/model/builder.mjs +1 -1
- package/dist/model/index.d.mts +45 -43
- package/dist/model/index.mjs +1 -2
- package/dist/vite-plugin/index.d.mts +60 -59
- package/dist/vite-plugin/index.mjs +1 -1
- package/dist/vite-plugin/internal.d.mts +33 -405
- package/dist/vite-plugin/internal.mjs +1 -7
- package/package.json +86 -72
- package/react/index.d.mts +4535 -0
- package/react/index.mjs +53894 -0
- package/react/package.json +2 -3
- package/vite-plugin/internal/package.json +4 -0
- package/vite-plugin-modules.d.ts +30 -94
- package/dist/shared/likec4.CB2-Uaub.mjs +0 -47
- package/dist/shared/likec4.CDVXAxDx.mjs +0 -3573
- package/dist/shared/likec4.CRP-WAuw.mjs +0 -330
- package/dist/shared/likec4.CXTvqtC-.mjs +0 -207
- package/dist/shared/likec4.DOUP9ptn.mjs +0 -1
- package/dist/shared/likec4.DO_7oUns.mjs +0 -2
- package/dist/shared/likec4.DqDU0qex.d.mts +0 -4660
- package/dist/shared/likec4.iedqayBZ.d.mts +0 -25982
- package/icons/all/package.json +0 -4
- package/icons/all.d.ts +0 -5241
- package/icons/all.js +0 -10413
- package/icons/aws/activate.js +0 -1
- package/icons/aws/alexa-for-business.js +0 -1
- package/icons/aws/amplify.js +0 -1
- package/icons/aws/apache-mxnet-on-aws.js +0 -1
- package/icons/aws/api-gateway.js +0 -1
- package/icons/aws/app-config.js +0 -1
- package/icons/aws/app-flow.js +0 -1
- package/icons/aws/app-mesh.js +0 -1
- package/icons/aws/app-runner.js +0 -1
- package/icons/aws/app-stream.js +0 -1
- package/icons/aws/app-sync.js +0 -1
- package/icons/aws/application-auto-scaling.js +0 -1
- package/icons/aws/application-composer.js +0 -1
- package/icons/aws/application-cost-profiler.js +0 -1
- package/icons/aws/application-discovery-service.js +0 -1
- package/icons/aws/application-migration-service.js +0 -1
- package/icons/aws/artifact.js +0 -1
- package/icons/aws/athena.js +0 -1
- package/icons/aws/audit-manager.js +0 -1
- package/icons/aws/augmented-ai-a2i.js +0 -1
- package/icons/aws/aurora.js +0 -1
- package/icons/aws/auto-scaling.js +0 -1
- package/icons/aws/backint-agent.js +0 -1
- package/icons/aws/backup.js +0 -1
- package/icons/aws/batch.js +0 -1
- package/icons/aws/billing-conductor.js +0 -1
- package/icons/aws/bottlerocket.js +0 -1
- package/icons/aws/braket.js +0 -1
- package/icons/aws/budgets.js +0 -1
- package/icons/aws/certificate-manager.js +0 -1
- package/icons/aws/chatbot.js +0 -1
- package/icons/aws/chime-sdk.js +0 -1
- package/icons/aws/chime-voice-connector.js +0 -1
- package/icons/aws/chime.js +0 -1
- package/icons/aws/clean-rooms.js +0 -1
- package/icons/aws/client-vpn.js +0 -1
- package/icons/aws/cloud-control-api.js +0 -1
- package/icons/aws/cloud-development-kit.js +0 -1
- package/icons/aws/cloud-directory.js +0 -1
- package/icons/aws/cloud-formation.js +0 -1
- package/icons/aws/cloud-front.js +0 -1
- package/icons/aws/cloud-hsm.js +0 -1
- package/icons/aws/cloud-map.js +0 -1
- package/icons/aws/cloud-search.js +0 -1
- package/icons/aws/cloud-shell.js +0 -1
- package/icons/aws/cloud-trail.js +0 -1
- package/icons/aws/cloud-wan.js +0 -1
- package/icons/aws/cloud-watch.js +0 -1
- package/icons/aws/cloud9.js +0 -1
- package/icons/aws/code-artifact.js +0 -1
- package/icons/aws/code-build.js +0 -1
- package/icons/aws/code-catalyst.js +0 -1
- package/icons/aws/code-commit.js +0 -1
- package/icons/aws/code-deploy.js +0 -1
- package/icons/aws/code-guru.js +0 -1
- package/icons/aws/code-pipeline.js +0 -1
- package/icons/aws/code-star.js +0 -1
- package/icons/aws/code-whisperer.js +0 -1
- package/icons/aws/cognito.js +0 -1
- package/icons/aws/command-line-interface.js +0 -1
- package/icons/aws/comprehend-medical.js +0 -1
- package/icons/aws/comprehend.js +0 -1
- package/icons/aws/compute-optimizer.js +0 -1
- package/icons/aws/config.js +0 -1
- package/icons/aws/connect.js +0 -1
- package/icons/aws/console-mobile-application.js +0 -1
- package/icons/aws/control-tower.js +0 -1
- package/icons/aws/corretto.js +0 -1
- package/icons/aws/cost-and-usage-report.js +0 -1
- package/icons/aws/cost-explorer.js +0 -1
- package/icons/aws/data-exchange.js +0 -1
- package/icons/aws/data-pipeline.js +0 -1
- package/icons/aws/data-sync.js +0 -1
- package/icons/aws/data-zone.js +0 -1
- package/icons/aws/database-migration-service.js +0 -1
- package/icons/aws/deep-composer.js +0 -1
- package/icons/aws/deep-learning-amis.js +0 -1
- package/icons/aws/deep-learning-containers.js +0 -1
- package/icons/aws/deep-lens.js +0 -1
- package/icons/aws/deep-racer.js +0 -1
- package/icons/aws/detective.js +0 -1
- package/icons/aws/dev-ops-guru.js +0 -1
- package/icons/aws/device-farm.js +0 -1
- package/icons/aws/direct-connect.js +0 -1
- package/icons/aws/directory-service.js +0 -1
- package/icons/aws/distro-for-open-telemetry.js +0 -1
- package/icons/aws/document-db.js +0 -1
- package/icons/aws/dynamo-db.js +0 -1
- package/icons/aws/ec2-auto-scaling.js +0 -1
- package/icons/aws/ec2-image-builder.js +0 -1
- package/icons/aws/ec2.js +0 -1
- package/icons/aws/ecs-anywhere.js +0 -1
- package/icons/aws/efs.js +0 -1
- package/icons/aws/eks-anywhere.js +0 -1
- package/icons/aws/eks-cloud.js +0 -1
- package/icons/aws/eks-distro.js +0 -1
- package/icons/aws/elasti-cache.js +0 -1
- package/icons/aws/elastic-beanstalk.js +0 -1
- package/icons/aws/elastic-block-store.js +0 -1
- package/icons/aws/elastic-container-registry.js +0 -1
- package/icons/aws/elastic-container-service.js +0 -1
- package/icons/aws/elastic-disaster-recovery.js +0 -1
- package/icons/aws/elastic-fabric-adapter.js +0 -1
- package/icons/aws/elastic-inference.js +0 -1
- package/icons/aws/elastic-kubernetes-service.js +0 -1
- package/icons/aws/elastic-load-balancing.js +0 -1
- package/icons/aws/elastic-transcoder.js +0 -1
- package/icons/aws/elemental-appliances-software.js +0 -1
- package/icons/aws/elemental-conductor.js +0 -1
- package/icons/aws/elemental-delta.js +0 -1
- package/icons/aws/elemental-link.js +0 -1
- package/icons/aws/elemental-live.js +0 -1
- package/icons/aws/elemental-media-connect.js +0 -1
- package/icons/aws/elemental-media-convert.js +0 -1
- package/icons/aws/elemental-media-live.js +0 -1
- package/icons/aws/elemental-media-package.js +0 -1
- package/icons/aws/elemental-media-store.js +0 -1
- package/icons/aws/elemental-media-tailor.js +0 -1
- package/icons/aws/elemental-server.js +0 -1
- package/icons/aws/emr.js +0 -1
- package/icons/aws/event-bridge.js +0 -1
- package/icons/aws/express-workflows.js +0 -1
- package/icons/aws/fargate.js +0 -1
- package/icons/aws/fault-injection-simulator.js +0 -1
- package/icons/aws/file-cache.js +0 -1
- package/icons/aws/fin-space.js +0 -1
- package/icons/aws/firewall-manager.js +0 -1
- package/icons/aws/forecast.js +0 -1
- package/icons/aws/fraud-detector.js +0 -1
- package/icons/aws/free-rtos.js +0 -1
- package/icons/aws/fsx-for-lustre.js +0 -1
- package/icons/aws/fsx-for-net-app-ontap.js +0 -1
- package/icons/aws/fsx-for-open-zfs.js +0 -1
- package/icons/aws/fsx-for-wfs.js +0 -1
- package/icons/aws/fsx.js +0 -1
- package/icons/aws/game-kit.js +0 -1
- package/icons/aws/game-lift.js +0 -1
- package/icons/aws/game-sparks.js +0 -1
- package/icons/aws/genomics-cli.js +0 -1
- package/icons/aws/global-accelerator.js +0 -1
- package/icons/aws/glue-data-brew.js +0 -1
- package/icons/aws/glue-elastic-views.js +0 -1
- package/icons/aws/glue.js +0 -1
- package/icons/aws/ground-station.js +0 -1
- package/icons/aws/guard-duty.js +0 -1
- package/icons/aws/health-lake.js +0 -1
- package/icons/aws/honeycode.js +0 -1
- package/icons/aws/iam-identity-center.js +0 -1
- package/icons/aws/identity-and-access-management.js +0 -1
- package/icons/aws/inspector.js +0 -1
- package/icons/aws/interactive-video-service.js +0 -1
- package/icons/aws/io-t-1-click.js +0 -1
- package/icons/aws/io-t-analytics.js +0 -1
- package/icons/aws/io-t-button.js +0 -1
- package/icons/aws/io-t-core.js +0 -1
- package/icons/aws/io-t-device-defender.js +0 -1
- package/icons/aws/io-t-device-management.js +0 -1
- package/icons/aws/io-t-edu-kit.js +0 -1
- package/icons/aws/io-t-events.js +0 -1
- package/icons/aws/io-t-express-link.js +0 -1
- package/icons/aws/io-t-fleet-wise.js +0 -1
- package/icons/aws/io-t-greengrass.js +0 -1
- package/icons/aws/io-t-robo-runner.js +0 -1
- package/icons/aws/io-t-site-wise.js +0 -1
- package/icons/aws/io-t-things-graph.js +0 -1
- package/icons/aws/io-t-twin-maker.js +0 -1
- package/icons/aws/iq.js +0 -1
- package/icons/aws/kendra.js +0 -1
- package/icons/aws/key-management-service.js +0 -1
- package/icons/aws/keyspaces.js +0 -1
- package/icons/aws/kinesis-data-analytics.js +0 -1
- package/icons/aws/kinesis-data-streams.js +0 -1
- package/icons/aws/kinesis-firehose.js +0 -1
- package/icons/aws/kinesis-video-streams.js +0 -1
- package/icons/aws/kinesis.js +0 -1
- package/icons/aws/lake-formation.js +0 -1
- package/icons/aws/lambda.js +0 -1
- package/icons/aws/launch-wizard.js +0 -1
- package/icons/aws/lex.js +0 -1
- package/icons/aws/license-manager.js +0 -1
- package/icons/aws/lightsail.js +0 -1
- package/icons/aws/local-zones.js +0 -1
- package/icons/aws/location-service.js +0 -1
- package/icons/aws/lookout-for-equipment.js +0 -1
- package/icons/aws/lookout-for-metrics.js +0 -1
- package/icons/aws/lookout-for-vision.js +0 -1
- package/icons/aws/lumberyard.js +0 -1
- package/icons/aws/macie.js +0 -1
- package/icons/aws/mainframe-modernization.js +0 -1
- package/icons/aws/managed-blockchain.js +0 -1
- package/icons/aws/managed-grafana.js +0 -1
- package/icons/aws/managed-service-for-prometheus.js +0 -1
- package/icons/aws/managed-services.js +0 -1
- package/icons/aws/managed-streaming-for-apache-kafka.js +0 -1
- package/icons/aws/managed-workflows-for-apache-airflow.js +0 -1
- package/icons/aws/management-console.js +0 -1
- package/icons/aws/marketplace-dark.js +0 -1
- package/icons/aws/marketplace-light.js +0 -1
- package/icons/aws/memory-db-for-redis.js +0 -1
- package/icons/aws/migration-evaluator.js +0 -1
- package/icons/aws/migration-hub.js +0 -1
- package/icons/aws/monitron.js +0 -1
- package/icons/aws/mq.js +0 -1
- package/icons/aws/neptune.js +0 -1
- package/icons/aws/network-firewall.js +0 -1
- package/icons/aws/neuron.js +0 -1
- package/icons/aws/nice-dcv.js +0 -1
- package/icons/aws/nice-engin-frame.js +0 -1
- package/icons/aws/nimble-studio.js +0 -1
- package/icons/aws/nitro-enclaves.js +0 -1
- package/icons/aws/omics.js +0 -1
- package/icons/aws/open-3d-engine.js +0 -1
- package/icons/aws/open-search-service.js +0 -1
- package/icons/aws/ops-works.js +0 -1
- package/icons/aws/organizations.js +0 -1
- package/icons/aws/outposts-family.js +0 -1
- package/icons/aws/outposts-rack.js +0 -1
- package/icons/aws/outposts-servers.js +0 -1
- package/icons/aws/panorama.js +0 -1
- package/icons/aws/parallel-cluster.js +0 -1
- package/icons/aws/personal-health-dashboard.js +0 -1
- package/icons/aws/personalize.js +0 -1
- package/icons/aws/pinpoint-apis.js +0 -1
- package/icons/aws/pinpoint.js +0 -1
- package/icons/aws/polly.js +0 -1
- package/icons/aws/private-5g.js +0 -1
- package/icons/aws/private-certificate-authority.js +0 -1
- package/icons/aws/private-link.js +0 -1
- package/icons/aws/professional-services.js +0 -1
- package/icons/aws/proton.js +0 -1
- package/icons/aws/quantum-ledger-database.js +0 -1
- package/icons/aws/quick-sight.js +0 -1
- package/icons/aws/rds-on-vmware.js +0 -1
- package/icons/aws/rds.js +0 -1
- package/icons/aws/re-post.js +0 -1
- package/icons/aws/red-hat-open-shift-service-on-aws.js +0 -1
- package/icons/aws/redshift.js +0 -1
- package/icons/aws/rekognition.js +0 -1
- package/icons/aws/reserved-instance-reporting.js +0 -1
- package/icons/aws/resilience-hub.js +0 -1
- package/icons/aws/resource-access-manager.js +0 -1
- package/icons/aws/resource-explorer.js +0 -1
- package/icons/aws/robo-maker.js +0 -1
- package/icons/aws/route-53.js +0 -1
- package/icons/aws/s3-on-outposts.js +0 -1
- package/icons/aws/sage-maker-ground-truth.js +0 -1
- package/icons/aws/sage-maker-studio-lab.js +0 -1
- package/icons/aws/sage-maker.js +0 -1
- package/icons/aws/savings-plans.js +0 -1
- package/icons/aws/secrets-manager.js +0 -1
- package/icons/aws/security-hub.js +0 -1
- package/icons/aws/security-lake.js +0 -1
- package/icons/aws/server-migration-service.js +0 -1
- package/icons/aws/serverless-application-repository.js +0 -1
- package/icons/aws/service-catalog.js +0 -1
- package/icons/aws/service-management-connector.js +0 -1
- package/icons/aws/shield.js +0 -1
- package/icons/aws/signer.js +0 -1
- package/icons/aws/sim-space-weaver.js +0 -1
- package/icons/aws/simple-email-service.js +0 -1
- package/icons/aws/simple-notification-service.js +0 -1
- package/icons/aws/simple-queue-service.js +0 -1
- package/icons/aws/simple-storage-service-glacier.js +0 -1
- package/icons/aws/simple-storage-service.js +0 -1
- package/icons/aws/site-to-site-vpn.js +0 -1
- package/icons/aws/snowball-edge.js +0 -1
- package/icons/aws/snowball.js +0 -1
- package/icons/aws/snowcone.js +0 -1
- package/icons/aws/snowmobile.js +0 -1
- package/icons/aws/step-functions.js +0 -1
- package/icons/aws/storage-gateway.js +0 -1
- package/icons/aws/sumerian.js +0 -1
- package/icons/aws/supply-chain.js +0 -1
- package/icons/aws/support.js +0 -1
- package/icons/aws/systems-manager.js +0 -1
- package/icons/aws/tensor-flow-on-aws.js +0 -1
- package/icons/aws/textract.js +0 -1
- package/icons/aws/thinkbox-deadline.js +0 -1
- package/icons/aws/thinkbox-frost.js +0 -1
- package/icons/aws/thinkbox-krakatoa.js +0 -1
- package/icons/aws/thinkbox-sequoia.js +0 -1
- package/icons/aws/thinkbox-stoke.js +0 -1
- package/icons/aws/thinkbox-xmesh.js +0 -1
- package/icons/aws/timestream.js +0 -1
- package/icons/aws/tools-and-sdks.js +0 -1
- package/icons/aws/torch-serve.js +0 -1
- package/icons/aws/training-certification.js +0 -1
- package/icons/aws/transcribe.js +0 -1
- package/icons/aws/transfer-family.js +0 -1
- package/icons/aws/transit-gateway.js +0 -1
- package/icons/aws/translate.js +0 -1
- package/icons/aws/trusted-advisor.js +0 -1
- package/icons/aws/verified-access.js +0 -1
- package/icons/aws/verified-permissions.js +0 -1
- package/icons/aws/virtual-private-cloud.js +0 -1
- package/icons/aws/vmware-cloud-on-aws.js +0 -1
- package/icons/aws/vpc-lattice.js +0 -1
- package/icons/aws/waf.js +0 -1
- package/icons/aws/wavelength.js +0 -1
- package/icons/aws/well-architected-tool.js +0 -1
- package/icons/aws/wickr.js +0 -1
- package/icons/aws/work-docs-sdk.js +0 -1
- package/icons/aws/work-docs.js +0 -1
- package/icons/aws/work-link.js +0 -1
- package/icons/aws/work-mail.js +0 -1
- package/icons/aws/work-spaces-family.js +0 -1
- package/icons/aws/x-ray.js +0 -1
- package/icons/azure/abs-member.js +0 -1
- package/icons/azure/active-directory-connect-health.js +0 -1
- package/icons/azure/activity-log.js +0 -1
- package/icons/azure/administrative-units.js +0 -1
- package/icons/azure/advisor.js +0 -1
- package/icons/azure/ai-at-edge.js +0 -1
- package/icons/azure/ai-studio.js +0 -1
- package/icons/azure/aks-automatic.js +0 -1
- package/icons/azure/aks-istio.js +0 -1
- package/icons/azure/alerts.js +0 -1
- package/icons/azure/all-resources.js +0 -1
- package/icons/azure/analysis-services.js +0 -1
- package/icons/azure/anomaly-detector.js +0 -1
- package/icons/azure/api-center.js +0 -1
- package/icons/azure/api-connections.js +0 -1
- package/icons/azure/api-management-services.js +0 -1
- package/icons/azure/api-proxy.js +0 -1
- package/icons/azure/app-compliance-automation.js +0 -1
- package/icons/azure/app-configuration.js +0 -1
- package/icons/azure/app-registrations.js +0 -1
- package/icons/azure/app-service-certificates.js +0 -1
- package/icons/azure/app-service-domains.js +0 -1
- package/icons/azure/app-service-environments.js +0 -1
- package/icons/azure/app-service-plans.js +0 -1
- package/icons/azure/app-services.js +0 -1
- package/icons/azure/app-space-component.js +0 -1
- package/icons/azure/app-space.js +0 -1
- package/icons/azure/applens.js +0 -1
- package/icons/azure/application-gateway-containers.js +0 -1
- package/icons/azure/application-gateways.js +0 -1
- package/icons/azure/application-group.js +0 -1
- package/icons/azure/application-insights.js +0 -1
- package/icons/azure/application-security-groups.js +0 -1
- package/icons/azure/aquila.js +0 -1
- package/icons/azure/arc-data-services.js +0 -1
- package/icons/azure/arc-kubernetes.js +0 -1
- package/icons/azure/arc-machines.js +0 -1
- package/icons/azure/arc-postgre-sql.js +0 -1
- package/icons/azure/arc-sql-managed-instance.js +0 -1
- package/icons/azure/arc-sql-server.js +0 -1
- package/icons/azure/atm-multistack.js +0 -1
- package/icons/azure/auto-scale.js +0 -1
- package/icons/azure/automanaged-vm.js +0 -1
- package/icons/azure/automation-accounts.js +0 -1
- package/icons/azure/availability-sets.js +0 -1
- package/icons/azure/avs-vm.js +0 -1
- package/icons/azure/azure-a.js +0 -1
- package/icons/azure/azure-ad-b2c.js +0 -1
- package/icons/azure/azure-api-for-fhir.js +0 -1
- package/icons/azure/azure-applied-ai-services.js +0 -1
- package/icons/azure/azure-arc.js +0 -1
- package/icons/azure/azure-attestation.js +0 -1
- package/icons/azure/azure-backup-center.js +0 -1
- package/icons/azure/azure-blockchain-service.js +0 -1
- package/icons/azure/azure-center-for-sap.js +0 -1
- package/icons/azure/azure-chaos-studio.js +0 -1
- package/icons/azure/azure-cloud-shell.js +0 -1
- package/icons/azure/azure-communication-services.js +0 -1
- package/icons/azure/azure-communications-gateway.js +0 -1
- package/icons/azure/azure-compute-galleries.js +0 -1
- package/icons/azure/azure-consumption-commitment.js +0 -1
- package/icons/azure/azure-cosmos-db.js +0 -1
- package/icons/azure/azure-data-catalog.js +0 -1
- package/icons/azure/azure-data-explorer-clusters.js +0 -1
- package/icons/azure/azure-database-maria-db-server.js +0 -1
- package/icons/azure/azure-database-migration-services.js +0 -1
- package/icons/azure/azure-database-my-sql-server.js +0 -1
- package/icons/azure/azure-database-postgre-sql-server-group.js +0 -1
- package/icons/azure/azure-database-postgre-sql-server.js +0 -1
- package/icons/azure/azure-databox-gateway.js +0 -1
- package/icons/azure/azure-databricks.js +0 -1
- package/icons/azure/azure-deployment-environments.js +0 -1
- package/icons/azure/azure-dev-ops.js +0 -1
- package/icons/azure/azure-dev-tunnels.js +0 -1
- package/icons/azure/azure-edge-hardware-center.js +0 -1
- package/icons/azure/azure-experimentation-studio.js +0 -1
- package/icons/azure/azure-fileshares.js +0 -1
- package/icons/azure/azure-firewall-manager.js +0 -1
- package/icons/azure/azure-firewall-policy.js +0 -1
- package/icons/azure/azure-hcp-cache.js +0 -1
- package/icons/azure/azure-hpc-workbenches.js +0 -1
- package/icons/azure/azure-hybrid-center.js +0 -1
- package/icons/azure/azure-information-protection.js +0 -1
- package/icons/azure/azure-io-t-operations.js +0 -1
- package/icons/azure/azure-lighthouse.js +0 -1
- package/icons/azure/azure-load-testing.js +0 -1
- package/icons/azure/azure-managed-grafana.js +0 -1
- package/icons/azure/azure-managed-redis.js +0 -1
- package/icons/azure/azure-maps-accounts.js +0 -1
- package/icons/azure/azure-media-service.js +0 -1
- package/icons/azure/azure-migrate.js +0 -1
- package/icons/azure/azure-monitor-dashboard.js +0 -1
- package/icons/azure/azure-monitor-pipeline.js +0 -1
- package/icons/azure/azure-monitors-for-sap-solutions.js +0 -1
- package/icons/azure/azure-net-app-files.js +0 -1
- package/icons/azure/azure-network-function-manager-functions.js +0 -1
- package/icons/azure/azure-network-function-manager.js +0 -1
- package/icons/azure/azure-object-understanding.js +0 -1
- package/icons/azure/azure-open-ai.js +0 -1
- package/icons/azure/azure-operator-5g-core.js +0 -1
- package/icons/azure/azure-operator-insights.js +0 -1
- package/icons/azure/azure-operator-nexus.js +0 -1
- package/icons/azure/azure-operator-service-manager.js +0 -1
- package/icons/azure/azure-orbital.js +0 -1
- package/icons/azure/azure-programmable-connectivity.js +0 -1
- package/icons/azure/azure-purview-accounts.js +0 -1
- package/icons/azure/azure-quotas.js +0 -1
- package/icons/azure/azure-red-hat-open-shift.js +0 -1
- package/icons/azure/azure-sentinel.js +0 -1
- package/icons/azure/azure-service-bus.js +0 -1
- package/icons/azure/azure-sphere.js +0 -1
- package/icons/azure/azure-spring-apps.js +0 -1
- package/icons/azure/azure-sql-edge.js +0 -1
- package/icons/azure/azure-sql-server-stretch-databases.js +0 -1
- package/icons/azure/azure-sql-vm.js +0 -1
- package/icons/azure/azure-sql.js +0 -1
- package/icons/azure/azure-stack-edge.js +0 -1
- package/icons/azure/azure-stack-hci-sizer.js +0 -1
- package/icons/azure/azure-stack.js +0 -1
- package/icons/azure/azure-storage-mover.js +0 -1
- package/icons/azure/azure-support-center-blue.js +0 -1
- package/icons/azure/azure-sustainability.js +0 -1
- package/icons/azure/azure-synapse-analytics.js +0 -1
- package/icons/azure/azure-token-service.js +0 -1
- package/icons/azure/azure-video-indexer.js +0 -1
- package/icons/azure/azure-virtual-desktop.js +0 -1
- package/icons/azure/azure-vmware-solution.js +0 -1
- package/icons/azure/azure-workbooks.js +0 -1
- package/icons/azure/azurite.js +0 -1
- package/icons/azure/backlog.js +0 -1
- package/icons/azure/backup-vault.js +0 -1
- package/icons/azure/bare-metal-infrastructure.js +0 -1
- package/icons/azure/bastions.js +0 -1
- package/icons/azure/batch-accounts.js +0 -1
- package/icons/azure/batch-ai.js +0 -1
- package/icons/azure/biz-talk.js +0 -1
- package/icons/azure/blob-block.js +0 -1
- package/icons/azure/blob-page.js +0 -1
- package/icons/azure/blockchain-applications.js +0 -1
- package/icons/azure/blueprints.js +0 -1
- package/icons/azure/bonsai.js +0 -1
- package/icons/azure/bot-services.js +0 -1
- package/icons/azure/branch.js +0 -1
- package/icons/azure/breeze.js +0 -1
- package/icons/azure/browser.js +0 -1
- package/icons/azure/bug.js +0 -1
- package/icons/azure/builds.js +0 -1
- package/icons/azure/business-process-tracking.js +0 -1
- package/icons/azure/cache-redis.js +0 -1
- package/icons/azure/cache.js +0 -1
- package/icons/azure/capacity-reservation-groups.js +0 -1
- package/icons/azure/capacity.js +0 -1
- package/icons/azure/cdn-profiles.js +0 -1
- package/icons/azure/central-service-instance-for-sap.js +0 -1
- package/icons/azure/ceres.js +0 -1
- package/icons/azure/change-analysis.js +0 -1
- package/icons/azure/client-apps.js +0 -1
- package/icons/azure/cloud-services-classic.js +0 -1
- package/icons/azure/cloud-services-extended-support.js +0 -1
- package/icons/azure/cloud-test.js +0 -1
- package/icons/azure/code-optimization.js +0 -1
- package/icons/azure/code.js +0 -1
- package/icons/azure/cognitive-search.js +0 -1
- package/icons/azure/cognitive-services-decisions.js +0 -1
- package/icons/azure/cognitive-services.js +0 -1
- package/icons/azure/collaborative-service.js +0 -1
- package/icons/azure/commit.js +0 -1
- package/icons/azure/community-images.js +0 -1
- package/icons/azure/compliance-center.js +0 -1
- package/icons/azure/compliance.js +0 -1
- package/icons/azure/compute-fleet.js +0 -1
- package/icons/azure/computer-vision.js +0 -1
- package/icons/azure/conditional-access.js +0 -1
- package/icons/azure/confidential-ledgers.js +0 -1
- package/icons/azure/connected-cache.js +0 -1
- package/icons/azure/connected-vehicle-platform.js +0 -1
- package/icons/azure/connections.js +0 -1
- package/icons/azure/consortium.js +0 -1
- package/icons/azure/container-apps-environments.js +0 -1
- package/icons/azure/container-instances.js +0 -1
- package/icons/azure/container-registries.js +0 -1
- package/icons/azure/container-services-deprecated.js +0 -1
- package/icons/azure/content-moderators.js +0 -1
- package/icons/azure/content-safety.js +0 -1
- package/icons/azure/controls-horizontal.js +0 -1
- package/icons/azure/controls.js +0 -1
- package/icons/azure/cost-alerts.js +0 -1
- package/icons/azure/cost-analysis.js +0 -1
- package/icons/azure/cost-budgets.js +0 -1
- package/icons/azure/cost-export.js +0 -1
- package/icons/azure/cost-management-and-billing.js +0 -1
- package/icons/azure/cost-management.js +0 -1
- package/icons/azure/counter.js +0 -1
- package/icons/azure/cubes.js +0 -1
- package/icons/azure/custom-ip-prefix.js +0 -1
- package/icons/azure/custom-vision.js +0 -1
- package/icons/azure/customer-lockbox-for-microsoft-azure.js +0 -1
- package/icons/azure/dashboard-hub.js +0 -1
- package/icons/azure/dashboard.js +0 -1
- package/icons/azure/data-box.js +0 -1
- package/icons/azure/data-collection-rules.js +0 -1
- package/icons/azure/data-factories.js +0 -1
- package/icons/azure/data-lake-analytics.js +0 -1
- package/icons/azure/data-lake-storage-gen1.js +0 -1
- package/icons/azure/data-lake-store-gen1.js +0 -1
- package/icons/azure/data-share-invitations.js +0 -1
- package/icons/azure/data-shares.js +0 -1
- package/icons/azure/data-virtualization.js +0 -1
- package/icons/azure/database-instance-for-sap.js +0 -1
- package/icons/azure/ddo-s-protection-plans.js +0 -1
- package/icons/azure/dedicated-hsm.js +0 -1
- package/icons/azure/defender-cm-local-manager.js +0 -1
- package/icons/azure/defender-dcs-controller.js +0 -1
- package/icons/azure/defender-distributer-control-system.js +0 -1
- package/icons/azure/defender-engineering-station.js +0 -1
- package/icons/azure/defender-external-management.js +0 -1
- package/icons/azure/defender-freezer-monitor.js +0 -1
- package/icons/azure/defender-historian.js +0 -1
- package/icons/azure/defender-hmi.js +0 -1
- package/icons/azure/defender-industrial-packaging-system.js +0 -1
- package/icons/azure/defender-industrial-printer.js +0 -1
- package/icons/azure/defender-industrial-robot.js +0 -1
- package/icons/azure/defender-industrial-scale-system.js +0 -1
- package/icons/azure/defender-marquee.js +0 -1
- package/icons/azure/defender-meter.js +0 -1
- package/icons/azure/defender-plc.js +0 -1
- package/icons/azure/defender-pneumatic-device.js +0 -1
- package/icons/azure/defender-programable-board.js +0 -1
- package/icons/azure/defender-relay.js +0 -1
- package/icons/azure/defender-robot-controller.js +0 -1
- package/icons/azure/defender-rtu.js +0 -1
- package/icons/azure/defender-sensor.js +0 -1
- package/icons/azure/defender-slot.js +0 -1
- package/icons/azure/defender-web-guiding-system.js +0 -1
- package/icons/azure/detonation.js +0 -1
- package/icons/azure/dev-console.js +0 -1
- package/icons/azure/dev-ops-starter.js +0 -1
- package/icons/azure/dev-test-labs.js +0 -1
- package/icons/azure/device-compliance.js +0 -1
- package/icons/azure/device-configuration.js +0 -1
- package/icons/azure/device-enrollment.js +0 -1
- package/icons/azure/device-provisioning-services.js +0 -1
- package/icons/azure/device-security-apple.js +0 -1
- package/icons/azure/device-security-google.js +0 -1
- package/icons/azure/device-security-windows.js +0 -1
- package/icons/azure/device-update-io-t-hub.js +0 -1
- package/icons/azure/devices.js +0 -1
- package/icons/azure/diagnostics-settings.js +0 -1
- package/icons/azure/digital-twins.js +0 -1
- package/icons/azure/disk-encryption-sets.js +0 -1
- package/icons/azure/disk-pool.js +0 -1
- package/icons/azure/disks-classic.js +0 -1
- package/icons/azure/disks-snapshots.js +0 -1
- package/icons/azure/disks.js +0 -1
- package/icons/azure/dns-multistack.js +0 -1
- package/icons/azure/dns-private-resolver.js +0 -1
- package/icons/azure/dns-security-policy.js +0 -1
- package/icons/azure/dns-zones.js +0 -1
- package/icons/azure/download.js +0 -1
- package/icons/azure/e-books.js +0 -1
- package/icons/azure/edge-actions.js +0 -1
- package/icons/azure/edge-management.js +0 -1
- package/icons/azure/edge-storage-accelerator.js +0 -1
- package/icons/azure/education.js +0 -1
- package/icons/azure/elastic-job-agents.js +0 -1
- package/icons/azure/elastic-san.js +0 -1
- package/icons/azure/endpoint-analytics.js +0 -1
- package/icons/azure/engage-center-connect.js +0 -1
- package/icons/azure/enterprise-applications.js +0 -1
- package/icons/azure/entra-connect-health.js +0 -1
- package/icons/azure/entra-connect-sync.js +0 -1
- package/icons/azure/entra-connect.js +0 -1
- package/icons/azure/entra-domain-services.js +0 -1
- package/icons/azure/entra-global-secure-access.js +0 -1
- package/icons/azure/entra-id-protection.js +0 -1
- package/icons/azure/entra-identity-custom-roles.js +0 -1
- package/icons/azure/entra-identity-licenses.js +0 -1
- package/icons/azure/entra-identity-risky-signins.js +0 -1
- package/icons/azure/entra-identity-risky-users.js +0 -1
- package/icons/azure/entra-identity-roles-and-administrators.js +0 -1
- package/icons/azure/entra-internet-access.js +0 -1
- package/icons/azure/entra-managed-identities.js +0 -1
- package/icons/azure/entra-private-access.js +0 -1
- package/icons/azure/entra-privleged-identity-management.js +0 -1
- package/icons/azure/entra-verified-id.js +0 -1
- package/icons/azure/error.js +0 -1
- package/icons/azure/event-grid-domains.js +0 -1
- package/icons/azure/event-grid-subscriptions.js +0 -1
- package/icons/azure/event-grid-topics.js +0 -1
- package/icons/azure/event-hub-clusters.js +0 -1
- package/icons/azure/event-hubs.js +0 -1
- package/icons/azure/exchange-access.js +0 -1
- package/icons/azure/exchange-on-premises-access.js +0 -1
- package/icons/azure/express-route-circuits.js +0 -1
- package/icons/azure/express-route-direct.js +0 -1
- package/icons/azure/express-route-traffic-collector.js +0 -1
- package/icons/azure/extended-security-updates.js +0 -1
- package/icons/azure/extensions.js +0 -1
- package/icons/azure/external-id-modified.js +0 -1
- package/icons/azure/external-id.js +0 -1
- package/icons/azure/external-identities.js +0 -1
- package/icons/azure/face-apis.js +0 -1
- package/icons/azure/feature-previews.js +0 -1
- package/icons/azure/fhir-service.js +0 -1
- package/icons/azure/fiji.js +0 -1
- package/icons/azure/file.js +0 -1
- package/icons/azure/files.js +0 -1
- package/icons/azure/firewalls.js +0 -1
- package/icons/azure/folder-blank.js +0 -1
- package/icons/azure/folder-website.js +0 -1
- package/icons/azure/form-recognizers.js +0 -1
- package/icons/azure/frd-qa.js +0 -1
- package/icons/azure/free-services.js +0 -1
- package/icons/azure/front-door-and-cdn-profiles.js +0 -1
- package/icons/azure/ftp.js +0 -1
- package/icons/azure/function-apps.js +0 -1
- package/icons/azure/gear.js +0 -1
- package/icons/azure/genomics-accounts.js +0 -1
- package/icons/azure/genomics.js +0 -1
- package/icons/azure/globe-error.js +0 -1
- package/icons/azure/globe-success.js +0 -1
- package/icons/azure/globe-warning.js +0 -1
- package/icons/azure/groups.js +0 -1
- package/icons/azure/guide.js +0 -1
- package/icons/azure/hd-insight-clusters.js +0 -1
- package/icons/azure/hdi-aks-cluster.js +0 -1
- package/icons/azure/heart.js +0 -1
- package/icons/azure/help-and-support.js +0 -1
- package/icons/azure/host-groups.js +0 -1
- package/icons/azure/host-pools.js +0 -1
- package/icons/azure/hosts.js +0 -1
- package/icons/azure/hybrid-connectivity-hub.js +0 -1
- package/icons/azure/ic-m-troubleshooting.js +0 -1
- package/icons/azure/identity-governance.js +0 -1
- package/icons/azure/identity-multi-factor-authentication.js +0 -1
- package/icons/azure/identity-secure-score.js +0 -1
- package/icons/azure/image-definitions.js +0 -1
- package/icons/azure/image-templates.js +0 -1
- package/icons/azure/image-versions.js +0 -1
- package/icons/azure/image.js +0 -1
- package/icons/azure/images.js +0 -1
- package/icons/azure/immersive-readers.js +0 -1
- package/icons/azure/import-export-jobs.js +0 -1
- package/icons/azure/industrial-io-t.js +0 -1
- package/icons/azure/information.js +0 -1
- package/icons/azure/infrastructure-backup.js +0 -1
- package/icons/azure/input-output.js +0 -1
- package/icons/azure/instance-pools.js +0 -1
- package/icons/azure/integration-accounts.js +0 -1
- package/icons/azure/integration-environments.js +0 -1
- package/icons/azure/integration-service-environments.js +0 -1
- package/icons/azure/internet-analyzer-profiles.js +0 -1
- package/icons/azure/intune-app-protection.js +0 -1
- package/icons/azure/intune-for-education.js +0 -1
- package/icons/azure/intune-trends.js +0 -1
- package/icons/azure/intune.js +0 -1
- package/icons/azure/io-t-central-applications.js +0 -1
- package/icons/azure/io-t-edge.js +0 -1
- package/icons/azure/io-t-hub.js +0 -1
- package/icons/azure/ip-address-manager.js +0 -1
- package/icons/azure/ip-groups.js +0 -1
- package/icons/azure/journey-hub.js +0 -1
- package/icons/azure/key-vaults.js +0 -1
- package/icons/azure/keys.js +0 -1
- package/icons/azure/kubernetes-fleet-manager.js +0 -1
- package/icons/azure/kubernetes-services.js +0 -1
- package/icons/azure/lab-accounts.js +0 -1
- package/icons/azure/lab-services.js +0 -1
- package/icons/azure/landing-zone.js +0 -1
- package/icons/azure/language-understanding.js +0 -1
- package/icons/azure/language.js +0 -1
- package/icons/azure/launch-portal.js +0 -1
- package/icons/azure/learn.js +0 -1
- package/icons/azure/load-balancer-hub.js +0 -1
- package/icons/azure/load-balancers.js +0 -1
- package/icons/azure/load-test.js +0 -1
- package/icons/azure/load-testing.js +0 -1
- package/icons/azure/local-network-gateways.js +0 -1
- package/icons/azure/location.js +0 -1
- package/icons/azure/log-analytics-query-pack.js +0 -1
- package/icons/azure/log-analytics-workspaces.js +0 -1
- package/icons/azure/log-streaming.js +0 -1
- package/icons/azure/logic-apps-custom-connector.js +0 -1
- package/icons/azure/logic-apps-template.js +0 -1
- package/icons/azure/logic-apps.js +0 -1
- package/icons/azure/machine-learning-studio-classic-web-services.js +0 -1
- package/icons/azure/machine-learning-studio-web-service-plans.js +0 -1
- package/icons/azure/machine-learning-studio-workspaces.js +0 -1
- package/icons/azure/machine-learning.js +0 -1
- package/icons/azure/machines-azure-arc.js +0 -1
- package/icons/azure/maintenance-configuration.js +0 -1
- package/icons/azure/managed-applications-center.js +0 -1
- package/icons/azure/managed-database.js +0 -1
- package/icons/azure/managed-desktop.js +0 -1
- package/icons/azure/managed-dev-ops-pools.js +0 -1
- package/icons/azure/managed-file-shares.js +0 -1
- package/icons/azure/managed-identities.js +0 -1
- package/icons/azure/managed-instance-apache-cassandra.js +0 -1
- package/icons/azure/managed-service-fabric.js +0 -1
- package/icons/azure/management-groups.js +0 -1
- package/icons/azure/management-portal.js +0 -1
- package/icons/azure/marketplace-management.js +0 -1
- package/icons/azure/marketplace.js +0 -1
- package/icons/azure/med-tech-service.js +0 -1
- package/icons/azure/media-file.js +0 -1
- package/icons/azure/media.js +0 -1
- package/icons/azure/mesh-applications.js +0 -1
- package/icons/azure/metrics-advisor.js +0 -1
- package/icons/azure/metrics.js +0 -1
- package/icons/azure/microsoft-defender-easm.js +0 -1
- package/icons/azure/microsoft-defender-for-cloud.js +0 -1
- package/icons/azure/microsoft-defender-for-io-t.js +0 -1
- package/icons/azure/microsoft-dev-box.js +0 -1
- package/icons/azure/mindaro.js +0 -1
- package/icons/azure/mission-landing-zone.js +0 -1
- package/icons/azure/mobile-engagement.js +0 -1
- package/icons/azure/mobile-networks.js +0 -1
- package/icons/azure/mobile.js +0 -1
- package/icons/azure/modular-data-center.js +0 -1
- package/icons/azure/module.js +0 -1
- package/icons/azure/monitor-health-models.js +0 -1
- package/icons/azure/monitor.js +0 -1
- package/icons/azure/multi-tenancy.js +0 -1
- package/icons/azure/multifactor-authentication.js +0 -1
- package/icons/azure/my-customers.js +0 -1
- package/icons/azure/nat.js +0 -1
- package/icons/azure/network-foundation-hub.js +0 -1
- package/icons/azure/network-interfaces.js +0 -1
- package/icons/azure/network-managers.js +0 -1
- package/icons/azure/network-security-groups.js +0 -1
- package/icons/azure/network-security-hub.js +0 -1
- package/icons/azure/network-security-perimeters.js +0 -1
- package/icons/azure/network-watcher.js +0 -1
- package/icons/azure/notification-hub-namespaces.js +0 -1
- package/icons/azure/notification-hubs.js +0 -1
- package/icons/azure/offers.js +0 -1
- package/icons/azure/on-premises-data-gateways.js +0 -1
- package/icons/azure/open-supply-chain-platform.js +0 -1
- package/icons/azure/operation-log-classic.js +0 -1
- package/icons/azure/oracle-database.js +0 -1
- package/icons/azure/os-images-classic.js +0 -1
- package/icons/azure/osconfig.js +0 -1
- package/icons/azure/outbound-connection.js +0 -1
- package/icons/azure/partner-namespace.js +0 -1
- package/icons/azure/partner-registration.js +0 -1
- package/icons/azure/partner-topic.js +0 -1
- package/icons/azure/peering-service.js +0 -1
- package/icons/azure/peerings.js +0 -1
- package/icons/azure/personalizers.js +0 -1
- package/icons/azure/planetary-computer-pro.js +0 -1
- package/icons/azure/plans.js +0 -1
- package/icons/azure/policy.js +0 -1
- package/icons/azure/power-bi-embedded.js +0 -1
- package/icons/azure/power-platform.js +0 -1
- package/icons/azure/power-up.js +0 -1
- package/icons/azure/power.js +0 -1
- package/icons/azure/powershell.js +0 -1
- package/icons/azure/preview-features.js +0 -1
- package/icons/azure/private-endpoints.js +0 -1
- package/icons/azure/private-link-service.js +0 -1
- package/icons/azure/private-link-services.js +0 -1
- package/icons/azure/private-link.js +0 -1
- package/icons/azure/process-explorer.js +0 -1
- package/icons/azure/production-ready-database.js +0 -1
- package/icons/azure/promethus.js +0 -1
- package/icons/azure/proximity-placement-groups.js +0 -1
- package/icons/azure/public-ip-addresses-classic.js +0 -1
- package/icons/azure/public-ip-addresses.js +0 -1
- package/icons/azure/public-ip-prefixes.js +0 -1
- package/icons/azure/qn-a-makers.js +0 -1
- package/icons/azure/quickstart-center.js +0 -1
- package/icons/azure/recent.js +0 -1
- package/icons/azure/recovery-services-vaults.js +0 -1
- package/icons/azure/region-management.js +0 -1
- package/icons/azure/relays.js +0 -1
- package/icons/azure/remote-rendering.js +0 -1
- package/icons/azure/reservations.js +0 -1
- package/icons/azure/reserved-capacity.js +0 -1
- package/icons/azure/reserved-ip-addresses-classic.js +0 -1
- package/icons/azure/resource-explorer.js +0 -1
- package/icons/azure/resource-graph-explorer.js +0 -1
- package/icons/azure/resource-group-list.js +0 -1
- package/icons/azure/resource-groups.js +0 -1
- package/icons/azure/resource-guard.js +0 -1
- package/icons/azure/resource-linked.js +0 -1
- package/icons/azure/resource-management-private-link.js +0 -1
- package/icons/azure/resource-mover.js +0 -1
- package/icons/azure/resources-provider.js +0 -1
- package/icons/azure/restore-points-collections.js +0 -1
- package/icons/azure/restore-points.js +0 -1
- package/icons/azure/route-filters.js +0 -1
- package/icons/azure/route-tables.js +0 -1
- package/icons/azure/rtos.js +0 -1
- package/icons/azure/savings-plans.js +0 -1
- package/icons/azure/scheduler-job-collections.js +0 -1
- package/icons/azure/scheduler.js +0 -1
- package/icons/azure/scvmm-management-servers.js +0 -1
- package/icons/azure/search-grid.js +0 -1
- package/icons/azure/search.js +0 -1
- package/icons/azure/security-baselines.js +0 -1
- package/icons/azure/security.js +0 -1
- package/icons/azure/send-grid-accounts.js +0 -1
- package/icons/azure/server-farm.js +0 -1
- package/icons/azure/serverless-search.js +0 -1
- package/icons/azure/service-catalog-mad.js +0 -1
- package/icons/azure/service-endpoint-policies.js +0 -1
- package/icons/azure/service-fabric-clusters.js +0 -1
- package/icons/azure/service-group-relationships.js +0 -1
- package/icons/azure/service-groups.js +0 -1
- package/icons/azure/service-health.js +0 -1
- package/icons/azure/service-providers.js +0 -1
- package/icons/azure/shared-image-galleries.js +0 -1
- package/icons/azure/signal-r.js +0 -1
- package/icons/azure/software-as-a-service.js +0 -1
- package/icons/azure/software-updates.js +0 -1
- package/icons/azure/solutions.js +0 -1
- package/icons/azure/sonic-dash.js +0 -1
- package/icons/azure/spatial-anchor-accounts.js +0 -1
- package/icons/azure/speech-services.js +0 -1
- package/icons/azure/spot-vm.js +0 -1
- package/icons/azure/spot-vmss.js +0 -1
- package/icons/azure/sql-data-warehouses.js +0 -1
- package/icons/azure/sql-database-fleet-manager.js +0 -1
- package/icons/azure/sql-database.js +0 -1
- package/icons/azure/sql-elastic-pools.js +0 -1
- package/icons/azure/sql-managed-instance.js +0 -1
- package/icons/azure/sql-server-registries.js +0 -1
- package/icons/azure/sql-server.js +0 -1
- package/icons/azure/ssd.js +0 -1
- package/icons/azure/ssh-keys.js +0 -1
- package/icons/azure/ssis-lift-and-shift-ir.js +0 -1
- package/icons/azure/stack-hci-premium.js +0 -1
- package/icons/azure/static-apps.js +0 -1
- package/icons/azure/stor-simple-data-managers.js +0 -1
- package/icons/azure/stor-simple-device-managers.js +0 -1
- package/icons/azure/storage-accounts-classic.js +0 -1
- package/icons/azure/storage-accounts.js +0 -1
- package/icons/azure/storage-actions.js +0 -1
- package/icons/azure/storage-azure-files.js +0 -1
- package/icons/azure/storage-container.js +0 -1
- package/icons/azure/storage-explorer.js +0 -1
- package/icons/azure/storage-functions.js +0 -1
- package/icons/azure/storage-hubs.js +0 -1
- package/icons/azure/storage-queue.js +0 -1
- package/icons/azure/storage-sync-services.js +0 -1
- package/icons/azure/stream-analytics-jobs.js +0 -1
- package/icons/azure/subnet.js +0 -1
- package/icons/azure/subscriptions.js +0 -1
- package/icons/azure/system-topic.js +0 -1
- package/icons/azure/table.js +0 -1
- package/icons/azure/tag.js +0 -1
- package/icons/azure/tags.js +0 -1
- package/icons/azure/targets-management.js +0 -1
- package/icons/azure/template-specs.js +0 -1
- package/icons/azure/templates.js +0 -1
- package/icons/azure/tenant-properties.js +0 -1
- package/icons/azure/tenant-status.js +0 -1
- package/icons/azure/test-base.js +0 -1
- package/icons/azure/tfs-vc-repository.js +0 -1
- package/icons/azure/time-series-data-sets.js +0 -1
- package/icons/azure/time-series-insights-access-policies.js +0 -1
- package/icons/azure/time-series-insights-environments.js +0 -1
- package/icons/azure/time-series-insights-event-sources.js +0 -1
- package/icons/azure/toolbox.js +0 -1
- package/icons/azure/toolchain-orchestrator.js +0 -1
- package/icons/azure/traffic-manager-profiles.js +0 -1
- package/icons/azure/translator-text.js +0 -1
- package/icons/azure/troubleshoot.js +0 -1
- package/icons/azure/universal-print.js +0 -1
- package/icons/azure/update-management-center.js +0 -1
- package/icons/azure/updates.js +0 -1
- package/icons/azure/user-privacy.js +0 -1
- package/icons/azure/user-settings.js +0 -1
- package/icons/azure/user-subscriptions.js +0 -1
- package/icons/azure/users.js +0 -1
- package/icons/azure/verifiable-credentials.js +0 -1
- package/icons/azure/verification-as-a-service.js +0 -1
- package/icons/azure/versions.js +0 -1
- package/icons/azure/video-analyzers.js +0 -1
- package/icons/azure/virtual-clusters.js +0 -1
- package/icons/azure/virtual-enclaves.js +0 -1
- package/icons/azure/virtual-instance-for-sap.js +0 -1
- package/icons/azure/virtual-machine.js +0 -1
- package/icons/azure/virtual-machines-classic.js +0 -1
- package/icons/azure/virtual-network-gateways.js +0 -1
- package/icons/azure/virtual-networks-classic.js +0 -1
- package/icons/azure/virtual-networks.js +0 -1
- package/icons/azure/virtual-router.js +0 -1
- package/icons/azure/virtual-visits-builder.js +0 -1
- package/icons/azure/virtual-wan-hub.js +0 -1
- package/icons/azure/virtual-wans.js +0 -1
- package/icons/azure/vm-app-definitions.js +0 -1
- package/icons/azure/vm-app-versions.js +0 -1
- package/icons/azure/vm-image-version.js +0 -1
- package/icons/azure/vm-images-classic.js +0 -1
- package/icons/azure/vm-scale-sets.js +0 -1
- package/icons/azure/vpnclient-windows.js +0 -1
- package/icons/azure/wac-installer.js +0 -1
- package/icons/azure/wac.js +0 -1
- package/icons/azure/web-app-database.js +0 -1
- package/icons/azure/web-application-firewall-policies-waf.js +0 -1
- package/icons/azure/web-jobs.js +0 -1
- package/icons/azure/web-slots.js +0 -1
- package/icons/azure/web-test.js +0 -1
- package/icons/azure/website-power.js +0 -1
- package/icons/azure/website-staging.js +0 -1
- package/icons/azure/windows-notification-services.js +0 -1
- package/icons/azure/windows10-core-services.js +0 -1
- package/icons/azure/workbooks.js +0 -1
- package/icons/azure/worker-container-app.js +0 -1
- package/icons/azure/workflow.js +0 -1
- package/icons/azure/workload-orchestration.js +0 -1
- package/icons/azure/workspace-gateway.js +0 -1
- package/icons/azure/workspaces.js +0 -1
- package/icons/bootstrap/0-circle-fill.js +0 -1
- package/icons/bootstrap/0-circle.js +0 -1
- package/icons/bootstrap/0-square-fill.js +0 -1
- package/icons/bootstrap/0-square.js +0 -1
- package/icons/bootstrap/1-circle-fill.js +0 -1
- package/icons/bootstrap/1-circle.js +0 -1
- package/icons/bootstrap/1-square-fill.js +0 -1
- package/icons/bootstrap/1-square.js +0 -1
- package/icons/bootstrap/123.js +0 -1
- package/icons/bootstrap/2-circle-fill.js +0 -1
- package/icons/bootstrap/2-circle.js +0 -1
- package/icons/bootstrap/2-square-fill.js +0 -1
- package/icons/bootstrap/2-square.js +0 -1
- package/icons/bootstrap/3-circle-fill.js +0 -1
- package/icons/bootstrap/3-circle.js +0 -1
- package/icons/bootstrap/3-square-fill.js +0 -1
- package/icons/bootstrap/3-square.js +0 -1
- package/icons/bootstrap/4-circle-fill.js +0 -1
- package/icons/bootstrap/4-circle.js +0 -1
- package/icons/bootstrap/4-square-fill.js +0 -1
- package/icons/bootstrap/4-square.js +0 -1
- package/icons/bootstrap/5-circle-fill.js +0 -1
- package/icons/bootstrap/5-circle.js +0 -1
- package/icons/bootstrap/5-square-fill.js +0 -1
- package/icons/bootstrap/5-square.js +0 -1
- package/icons/bootstrap/6-circle-fill.js +0 -1
- package/icons/bootstrap/6-circle.js +0 -1
- package/icons/bootstrap/6-square-fill.js +0 -1
- package/icons/bootstrap/6-square.js +0 -1
- package/icons/bootstrap/7-circle-fill.js +0 -1
- package/icons/bootstrap/7-circle.js +0 -1
- package/icons/bootstrap/7-square-fill.js +0 -1
- package/icons/bootstrap/7-square.js +0 -1
- package/icons/bootstrap/8-circle-fill.js +0 -1
- package/icons/bootstrap/8-circle.js +0 -1
- package/icons/bootstrap/8-square-fill.js +0 -1
- package/icons/bootstrap/8-square.js +0 -1
- package/icons/bootstrap/9-circle-fill.js +0 -1
- package/icons/bootstrap/9-circle.js +0 -1
- package/icons/bootstrap/9-square-fill.js +0 -1
- package/icons/bootstrap/9-square.js +0 -1
- package/icons/bootstrap/activity.js +0 -1
- package/icons/bootstrap/airplane-engines-fill.js +0 -1
- package/icons/bootstrap/airplane-engines.js +0 -1
- package/icons/bootstrap/airplane-fill.js +0 -1
- package/icons/bootstrap/airplane.js +0 -1
- package/icons/bootstrap/alarm-fill.js +0 -1
- package/icons/bootstrap/alarm.js +0 -1
- package/icons/bootstrap/alexa.js +0 -1
- package/icons/bootstrap/align-bottom.js +0 -1
- package/icons/bootstrap/align-center.js +0 -1
- package/icons/bootstrap/align-end.js +0 -1
- package/icons/bootstrap/align-middle.js +0 -1
- package/icons/bootstrap/align-start.js +0 -1
- package/icons/bootstrap/align-top.js +0 -1
- package/icons/bootstrap/alipay.js +0 -1
- package/icons/bootstrap/alphabet-uppercase.js +0 -1
- package/icons/bootstrap/alphabet.js +0 -1
- package/icons/bootstrap/alt.js +0 -1
- package/icons/bootstrap/amazon.js +0 -1
- package/icons/bootstrap/amd.js +0 -1
- package/icons/bootstrap/android.js +0 -1
- package/icons/bootstrap/android2.js +0 -1
- package/icons/bootstrap/app-indicator.js +0 -1
- package/icons/bootstrap/app.js +0 -1
- package/icons/bootstrap/apple.js +0 -1
- package/icons/bootstrap/archive-fill.js +0 -1
- package/icons/bootstrap/archive.js +0 -1
- package/icons/bootstrap/arrow-90deg-down.js +0 -1
- package/icons/bootstrap/arrow-90deg-left.js +0 -1
- package/icons/bootstrap/arrow-90deg-right.js +0 -1
- package/icons/bootstrap/arrow-90deg-up.js +0 -1
- package/icons/bootstrap/arrow-bar-down.js +0 -1
- package/icons/bootstrap/arrow-bar-left.js +0 -1
- package/icons/bootstrap/arrow-bar-right.js +0 -1
- package/icons/bootstrap/arrow-bar-up.js +0 -1
- package/icons/bootstrap/arrow-clockwise.js +0 -1
- package/icons/bootstrap/arrow-counterclockwise.js +0 -1
- package/icons/bootstrap/arrow-down-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-down-circle.js +0 -1
- package/icons/bootstrap/arrow-down-left-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-down-left-circle.js +0 -1
- package/icons/bootstrap/arrow-down-left-square-fill.js +0 -1
- package/icons/bootstrap/arrow-down-left-square.js +0 -1
- package/icons/bootstrap/arrow-down-left.js +0 -1
- package/icons/bootstrap/arrow-down-right-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-down-right-circle.js +0 -1
- package/icons/bootstrap/arrow-down-right-square-fill.js +0 -1
- package/icons/bootstrap/arrow-down-right-square.js +0 -1
- package/icons/bootstrap/arrow-down-right.js +0 -1
- package/icons/bootstrap/arrow-down-short.js +0 -1
- package/icons/bootstrap/arrow-down-square-fill.js +0 -1
- package/icons/bootstrap/arrow-down-square.js +0 -1
- package/icons/bootstrap/arrow-down-up.js +0 -1
- package/icons/bootstrap/arrow-down.js +0 -1
- package/icons/bootstrap/arrow-left-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-left-circle.js +0 -1
- package/icons/bootstrap/arrow-left-right.js +0 -1
- package/icons/bootstrap/arrow-left-short.js +0 -1
- package/icons/bootstrap/arrow-left-square-fill.js +0 -1
- package/icons/bootstrap/arrow-left-square.js +0 -1
- package/icons/bootstrap/arrow-left.js +0 -1
- package/icons/bootstrap/arrow-repeat.js +0 -1
- package/icons/bootstrap/arrow-return-left.js +0 -1
- package/icons/bootstrap/arrow-return-right.js +0 -1
- package/icons/bootstrap/arrow-right-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-right-circle.js +0 -1
- package/icons/bootstrap/arrow-right-short.js +0 -1
- package/icons/bootstrap/arrow-right-square-fill.js +0 -1
- package/icons/bootstrap/arrow-right-square.js +0 -1
- package/icons/bootstrap/arrow-right.js +0 -1
- package/icons/bootstrap/arrow-through-heart-fill.js +0 -1
- package/icons/bootstrap/arrow-through-heart.js +0 -1
- package/icons/bootstrap/arrow-up-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-up-circle.js +0 -1
- package/icons/bootstrap/arrow-up-left-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-up-left-circle.js +0 -1
- package/icons/bootstrap/arrow-up-left-square-fill.js +0 -1
- package/icons/bootstrap/arrow-up-left-square.js +0 -1
- package/icons/bootstrap/arrow-up-left.js +0 -1
- package/icons/bootstrap/arrow-up-right-circle-fill.js +0 -1
- package/icons/bootstrap/arrow-up-right-circle.js +0 -1
- package/icons/bootstrap/arrow-up-right-square-fill.js +0 -1
- package/icons/bootstrap/arrow-up-right-square.js +0 -1
- package/icons/bootstrap/arrow-up-right.js +0 -1
- package/icons/bootstrap/arrow-up-short.js +0 -1
- package/icons/bootstrap/arrow-up-square-fill.js +0 -1
- package/icons/bootstrap/arrow-up-square.js +0 -1
- package/icons/bootstrap/arrow-up.js +0 -1
- package/icons/bootstrap/arrows-angle-contract.js +0 -1
- package/icons/bootstrap/arrows-angle-expand.js +0 -1
- package/icons/bootstrap/arrows-collapse-vertical.js +0 -1
- package/icons/bootstrap/arrows-collapse.js +0 -1
- package/icons/bootstrap/arrows-expand-vertical.js +0 -1
- package/icons/bootstrap/arrows-expand.js +0 -1
- package/icons/bootstrap/arrows-fullscreen.js +0 -1
- package/icons/bootstrap/arrows-move.js +0 -1
- package/icons/bootstrap/arrows-vertical.js +0 -1
- package/icons/bootstrap/arrows.js +0 -1
- package/icons/bootstrap/aspect-ratio-fill.js +0 -1
- package/icons/bootstrap/aspect-ratio.js +0 -1
- package/icons/bootstrap/asterisk.js +0 -1
- package/icons/bootstrap/at.js +0 -1
- package/icons/bootstrap/award-fill.js +0 -1
- package/icons/bootstrap/award.js +0 -1
- package/icons/bootstrap/back.js +0 -1
- package/icons/bootstrap/backpack-fill.js +0 -1
- package/icons/bootstrap/backpack.js +0 -1
- package/icons/bootstrap/backpack2-fill.js +0 -1
- package/icons/bootstrap/backpack2.js +0 -1
- package/icons/bootstrap/backpack3-fill.js +0 -1
- package/icons/bootstrap/backpack3.js +0 -1
- package/icons/bootstrap/backpack4-fill.js +0 -1
- package/icons/bootstrap/backpack4.js +0 -1
- package/icons/bootstrap/backspace-fill.js +0 -1
- package/icons/bootstrap/backspace-reverse-fill.js +0 -1
- package/icons/bootstrap/backspace-reverse.js +0 -1
- package/icons/bootstrap/backspace.js +0 -1
- package/icons/bootstrap/badge-3d-fill.js +0 -1
- package/icons/bootstrap/badge-3d.js +0 -1
- package/icons/bootstrap/badge-4k-fill.js +0 -1
- package/icons/bootstrap/badge-4k.js +0 -1
- package/icons/bootstrap/badge-8k-fill.js +0 -1
- package/icons/bootstrap/badge-8k.js +0 -1
- package/icons/bootstrap/badge-ad-fill.js +0 -1
- package/icons/bootstrap/badge-ad.js +0 -1
- package/icons/bootstrap/badge-ar-fill.js +0 -1
- package/icons/bootstrap/badge-ar.js +0 -1
- package/icons/bootstrap/badge-cc-fill.js +0 -1
- package/icons/bootstrap/badge-cc.js +0 -1
- package/icons/bootstrap/badge-hd-fill.js +0 -1
- package/icons/bootstrap/badge-hd.js +0 -1
- package/icons/bootstrap/badge-sd-fill.js +0 -1
- package/icons/bootstrap/badge-sd.js +0 -1
- package/icons/bootstrap/badge-tm-fill.js +0 -1
- package/icons/bootstrap/badge-tm.js +0 -1
- package/icons/bootstrap/badge-vo-fill.js +0 -1
- package/icons/bootstrap/badge-vo.js +0 -1
- package/icons/bootstrap/badge-vr-fill.js +0 -1
- package/icons/bootstrap/badge-vr.js +0 -1
- package/icons/bootstrap/badge-wc-fill.js +0 -1
- package/icons/bootstrap/badge-wc.js +0 -1
- package/icons/bootstrap/bag-check-fill.js +0 -1
- package/icons/bootstrap/bag-check.js +0 -1
- package/icons/bootstrap/bag-dash-fill.js +0 -1
- package/icons/bootstrap/bag-dash.js +0 -1
- package/icons/bootstrap/bag-fill.js +0 -1
- package/icons/bootstrap/bag-heart-fill.js +0 -1
- package/icons/bootstrap/bag-heart.js +0 -1
- package/icons/bootstrap/bag-plus-fill.js +0 -1
- package/icons/bootstrap/bag-plus.js +0 -1
- package/icons/bootstrap/bag-x-fill.js +0 -1
- package/icons/bootstrap/bag-x.js +0 -1
- package/icons/bootstrap/bag.js +0 -1
- package/icons/bootstrap/balloon-fill.js +0 -1
- package/icons/bootstrap/balloon-heart-fill.js +0 -1
- package/icons/bootstrap/balloon-heart.js +0 -1
- package/icons/bootstrap/balloon.js +0 -1
- package/icons/bootstrap/ban-fill.js +0 -1
- package/icons/bootstrap/ban.js +0 -1
- package/icons/bootstrap/bandaid-fill.js +0 -1
- package/icons/bootstrap/bandaid.js +0 -1
- package/icons/bootstrap/bank.js +0 -1
- package/icons/bootstrap/bank2.js +0 -1
- package/icons/bootstrap/bar-chart-fill.js +0 -1
- package/icons/bootstrap/bar-chart-line-fill.js +0 -1
- package/icons/bootstrap/bar-chart-line.js +0 -1
- package/icons/bootstrap/bar-chart-steps.js +0 -1
- package/icons/bootstrap/bar-chart.js +0 -1
- package/icons/bootstrap/basket-fill.js +0 -1
- package/icons/bootstrap/basket.js +0 -1
- package/icons/bootstrap/basket2-fill.js +0 -1
- package/icons/bootstrap/basket2.js +0 -1
- package/icons/bootstrap/basket3-fill.js +0 -1
- package/icons/bootstrap/basket3.js +0 -1
- package/icons/bootstrap/battery-charging.js +0 -1
- package/icons/bootstrap/battery-full.js +0 -1
- package/icons/bootstrap/battery-half.js +0 -1
- package/icons/bootstrap/battery.js +0 -1
- package/icons/bootstrap/behance.js +0 -1
- package/icons/bootstrap/bell-fill.js +0 -1
- package/icons/bootstrap/bell-slash-fill.js +0 -1
- package/icons/bootstrap/bell-slash.js +0 -1
- package/icons/bootstrap/bell.js +0 -1
- package/icons/bootstrap/bezier.js +0 -1
- package/icons/bootstrap/bezier2.js +0 -1
- package/icons/bootstrap/bicycle.js +0 -1
- package/icons/bootstrap/bing.js +0 -1
- package/icons/bootstrap/binoculars-fill.js +0 -1
- package/icons/bootstrap/binoculars.js +0 -1
- package/icons/bootstrap/blockquote-left.js +0 -1
- package/icons/bootstrap/blockquote-right.js +0 -1
- package/icons/bootstrap/bluetooth.js +0 -1
- package/icons/bootstrap/body-text.js +0 -1
- package/icons/bootstrap/book-fill.js +0 -1
- package/icons/bootstrap/book-half.js +0 -1
- package/icons/bootstrap/book.js +0 -1
- package/icons/bootstrap/bookmark-check-fill.js +0 -1
- package/icons/bootstrap/bookmark-check.js +0 -1
- package/icons/bootstrap/bookmark-dash-fill.js +0 -1
- package/icons/bootstrap/bookmark-dash.js +0 -1
- package/icons/bootstrap/bookmark-fill.js +0 -1
- package/icons/bootstrap/bookmark-heart-fill.js +0 -1
- package/icons/bootstrap/bookmark-heart.js +0 -1
- package/icons/bootstrap/bookmark-plus-fill.js +0 -1
- package/icons/bootstrap/bookmark-plus.js +0 -1
- package/icons/bootstrap/bookmark-star-fill.js +0 -1
- package/icons/bootstrap/bookmark-star.js +0 -1
- package/icons/bootstrap/bookmark-x-fill.js +0 -1
- package/icons/bootstrap/bookmark-x.js +0 -1
- package/icons/bootstrap/bookmark.js +0 -1
- package/icons/bootstrap/bookmarks-fill.js +0 -1
- package/icons/bootstrap/bookmarks.js +0 -1
- package/icons/bootstrap/bookshelf.js +0 -1
- package/icons/bootstrap/boombox-fill.js +0 -1
- package/icons/bootstrap/boombox.js +0 -1
- package/icons/bootstrap/bootstrap-fill.js +0 -1
- package/icons/bootstrap/bootstrap-icons.js +0 -1
- package/icons/bootstrap/bootstrap-reboot.js +0 -1
- package/icons/bootstrap/bootstrap.js +0 -1
- package/icons/bootstrap/border-all.js +0 -1
- package/icons/bootstrap/border-bottom.js +0 -1
- package/icons/bootstrap/border-center.js +0 -1
- package/icons/bootstrap/border-inner.js +0 -1
- package/icons/bootstrap/border-left.js +0 -1
- package/icons/bootstrap/border-middle.js +0 -1
- package/icons/bootstrap/border-outer.js +0 -1
- package/icons/bootstrap/border-right.js +0 -1
- package/icons/bootstrap/border-style.js +0 -1
- package/icons/bootstrap/border-top.js +0 -1
- package/icons/bootstrap/border-width.js +0 -1
- package/icons/bootstrap/border.js +0 -1
- package/icons/bootstrap/bounding-box-circles.js +0 -1
- package/icons/bootstrap/bounding-box.js +0 -1
- package/icons/bootstrap/box-arrow-down-left.js +0 -1
- package/icons/bootstrap/box-arrow-down-right.js +0 -1
- package/icons/bootstrap/box-arrow-down.js +0 -1
- package/icons/bootstrap/box-arrow-in-down-left.js +0 -1
- package/icons/bootstrap/box-arrow-in-down-right.js +0 -1
- package/icons/bootstrap/box-arrow-in-down.js +0 -1
- package/icons/bootstrap/box-arrow-in-left.js +0 -1
- package/icons/bootstrap/box-arrow-in-right.js +0 -1
- package/icons/bootstrap/box-arrow-in-up-left.js +0 -1
- package/icons/bootstrap/box-arrow-in-up-right.js +0 -1
- package/icons/bootstrap/box-arrow-in-up.js +0 -1
- package/icons/bootstrap/box-arrow-left.js +0 -1
- package/icons/bootstrap/box-arrow-right.js +0 -1
- package/icons/bootstrap/box-arrow-up-left.js +0 -1
- package/icons/bootstrap/box-arrow-up-right.js +0 -1
- package/icons/bootstrap/box-arrow-up.js +0 -1
- package/icons/bootstrap/box-fill.js +0 -1
- package/icons/bootstrap/box-seam-fill.js +0 -1
- package/icons/bootstrap/box-seam.js +0 -1
- package/icons/bootstrap/box.js +0 -1
- package/icons/bootstrap/box2-fill.js +0 -1
- package/icons/bootstrap/box2-heart-fill.js +0 -1
- package/icons/bootstrap/box2-heart.js +0 -1
- package/icons/bootstrap/box2.js +0 -1
- package/icons/bootstrap/boxes.js +0 -1
- package/icons/bootstrap/braces-asterisk.js +0 -1
- package/icons/bootstrap/braces.js +0 -1
- package/icons/bootstrap/bricks.js +0 -1
- package/icons/bootstrap/briefcase-fill.js +0 -1
- package/icons/bootstrap/briefcase.js +0 -1
- package/icons/bootstrap/brightness-alt-high-fill.js +0 -1
- package/icons/bootstrap/brightness-alt-high.js +0 -1
- package/icons/bootstrap/brightness-alt-low-fill.js +0 -1
- package/icons/bootstrap/brightness-alt-low.js +0 -1
- package/icons/bootstrap/brightness-high-fill.js +0 -1
- package/icons/bootstrap/brightness-high.js +0 -1
- package/icons/bootstrap/brightness-low-fill.js +0 -1
- package/icons/bootstrap/brightness-low.js +0 -1
- package/icons/bootstrap/brilliance.js +0 -1
- package/icons/bootstrap/broadcast-pin.js +0 -1
- package/icons/bootstrap/broadcast.js +0 -1
- package/icons/bootstrap/browser-chrome.js +0 -1
- package/icons/bootstrap/browser-edge.js +0 -1
- package/icons/bootstrap/browser-firefox.js +0 -1
- package/icons/bootstrap/browser-safari.js +0 -1
- package/icons/bootstrap/brush-fill.js +0 -1
- package/icons/bootstrap/brush.js +0 -1
- package/icons/bootstrap/bucket-fill.js +0 -1
- package/icons/bootstrap/bucket.js +0 -1
- package/icons/bootstrap/bug-fill.js +0 -1
- package/icons/bootstrap/bug.js +0 -1
- package/icons/bootstrap/building-add.js +0 -1
- package/icons/bootstrap/building-check.js +0 -1
- package/icons/bootstrap/building-dash.js +0 -1
- package/icons/bootstrap/building-down.js +0 -1
- package/icons/bootstrap/building-exclamation.js +0 -1
- package/icons/bootstrap/building-fill-add.js +0 -1
- package/icons/bootstrap/building-fill-check.js +0 -1
- package/icons/bootstrap/building-fill-dash.js +0 -1
- package/icons/bootstrap/building-fill-down.js +0 -1
- package/icons/bootstrap/building-fill-exclamation.js +0 -1
- package/icons/bootstrap/building-fill-gear.js +0 -1
- package/icons/bootstrap/building-fill-lock.js +0 -1
- package/icons/bootstrap/building-fill-slash.js +0 -1
- package/icons/bootstrap/building-fill-up.js +0 -1
- package/icons/bootstrap/building-fill-x.js +0 -1
- package/icons/bootstrap/building-fill.js +0 -1
- package/icons/bootstrap/building-gear.js +0 -1
- package/icons/bootstrap/building-lock.js +0 -1
- package/icons/bootstrap/building-slash.js +0 -1
- package/icons/bootstrap/building-up.js +0 -1
- package/icons/bootstrap/building-x.js +0 -1
- package/icons/bootstrap/building.js +0 -1
- package/icons/bootstrap/buildings-fill.js +0 -1
- package/icons/bootstrap/buildings.js +0 -1
- package/icons/bootstrap/bullseye.js +0 -1
- package/icons/bootstrap/bus-front-fill.js +0 -1
- package/icons/bootstrap/bus-front.js +0 -1
- package/icons/bootstrap/c-circle-fill.js +0 -1
- package/icons/bootstrap/c-circle.js +0 -1
- package/icons/bootstrap/c-square-fill.js +0 -1
- package/icons/bootstrap/c-square.js +0 -1
- package/icons/bootstrap/cake-fill.js +0 -1
- package/icons/bootstrap/cake.js +0 -1
- package/icons/bootstrap/cake2-fill.js +0 -1
- package/icons/bootstrap/cake2.js +0 -1
- package/icons/bootstrap/calculator-fill.js +0 -1
- package/icons/bootstrap/calculator.js +0 -1
- package/icons/bootstrap/calendar-check-fill.js +0 -1
- package/icons/bootstrap/calendar-check.js +0 -1
- package/icons/bootstrap/calendar-date-fill.js +0 -1
- package/icons/bootstrap/calendar-date.js +0 -1
- package/icons/bootstrap/calendar-day-fill.js +0 -1
- package/icons/bootstrap/calendar-day.js +0 -1
- package/icons/bootstrap/calendar-event-fill.js +0 -1
- package/icons/bootstrap/calendar-event.js +0 -1
- package/icons/bootstrap/calendar-fill.js +0 -1
- package/icons/bootstrap/calendar-heart-fill.js +0 -1
- package/icons/bootstrap/calendar-heart.js +0 -1
- package/icons/bootstrap/calendar-minus-fill.js +0 -1
- package/icons/bootstrap/calendar-minus.js +0 -1
- package/icons/bootstrap/calendar-month-fill.js +0 -1
- package/icons/bootstrap/calendar-month.js +0 -1
- package/icons/bootstrap/calendar-plus-fill.js +0 -1
- package/icons/bootstrap/calendar-plus.js +0 -1
- package/icons/bootstrap/calendar-range-fill.js +0 -1
- package/icons/bootstrap/calendar-range.js +0 -1
- package/icons/bootstrap/calendar-week-fill.js +0 -1
- package/icons/bootstrap/calendar-week.js +0 -1
- package/icons/bootstrap/calendar-x-fill.js +0 -1
- package/icons/bootstrap/calendar-x.js +0 -1
- package/icons/bootstrap/calendar.js +0 -1
- package/icons/bootstrap/calendar2-check-fill.js +0 -1
- package/icons/bootstrap/calendar2-check.js +0 -1
- package/icons/bootstrap/calendar2-date-fill.js +0 -1
- package/icons/bootstrap/calendar2-date.js +0 -1
- package/icons/bootstrap/calendar2-day-fill.js +0 -1
- package/icons/bootstrap/calendar2-day.js +0 -1
- package/icons/bootstrap/calendar2-event-fill.js +0 -1
- package/icons/bootstrap/calendar2-event.js +0 -1
- package/icons/bootstrap/calendar2-fill.js +0 -1
- package/icons/bootstrap/calendar2-heart-fill.js +0 -1
- package/icons/bootstrap/calendar2-heart.js +0 -1
- package/icons/bootstrap/calendar2-minus-fill.js +0 -1
- package/icons/bootstrap/calendar2-minus.js +0 -1
- package/icons/bootstrap/calendar2-month-fill.js +0 -1
- package/icons/bootstrap/calendar2-month.js +0 -1
- package/icons/bootstrap/calendar2-plus-fill.js +0 -1
- package/icons/bootstrap/calendar2-plus.js +0 -1
- package/icons/bootstrap/calendar2-range-fill.js +0 -1
- package/icons/bootstrap/calendar2-range.js +0 -1
- package/icons/bootstrap/calendar2-week-fill.js +0 -1
- package/icons/bootstrap/calendar2-week.js +0 -1
- package/icons/bootstrap/calendar2-x-fill.js +0 -1
- package/icons/bootstrap/calendar2-x.js +0 -1
- package/icons/bootstrap/calendar2.js +0 -1
- package/icons/bootstrap/calendar3-event-fill.js +0 -1
- package/icons/bootstrap/calendar3-event.js +0 -1
- package/icons/bootstrap/calendar3-fill.js +0 -1
- package/icons/bootstrap/calendar3-range-fill.js +0 -1
- package/icons/bootstrap/calendar3-range.js +0 -1
- package/icons/bootstrap/calendar3-week-fill.js +0 -1
- package/icons/bootstrap/calendar3-week.js +0 -1
- package/icons/bootstrap/calendar3.js +0 -1
- package/icons/bootstrap/calendar4-event.js +0 -1
- package/icons/bootstrap/calendar4-range.js +0 -1
- package/icons/bootstrap/calendar4-week.js +0 -1
- package/icons/bootstrap/calendar4.js +0 -1
- package/icons/bootstrap/camera-fill.js +0 -1
- package/icons/bootstrap/camera-reels-fill.js +0 -1
- package/icons/bootstrap/camera-reels.js +0 -1
- package/icons/bootstrap/camera-video-fill.js +0 -1
- package/icons/bootstrap/camera-video-off-fill.js +0 -1
- package/icons/bootstrap/camera-video-off.js +0 -1
- package/icons/bootstrap/camera-video.js +0 -1
- package/icons/bootstrap/camera.js +0 -1
- package/icons/bootstrap/camera2.js +0 -1
- package/icons/bootstrap/capslock-fill.js +0 -1
- package/icons/bootstrap/capslock.js +0 -1
- package/icons/bootstrap/capsule-pill.js +0 -1
- package/icons/bootstrap/capsule.js +0 -1
- package/icons/bootstrap/car-front-fill.js +0 -1
- package/icons/bootstrap/car-front.js +0 -1
- package/icons/bootstrap/card-checklist.js +0 -1
- package/icons/bootstrap/card-heading.js +0 -1
- package/icons/bootstrap/card-image.js +0 -1
- package/icons/bootstrap/card-list.js +0 -1
- package/icons/bootstrap/card-text.js +0 -1
- package/icons/bootstrap/caret-down-fill.js +0 -1
- package/icons/bootstrap/caret-down-square-fill.js +0 -1
- package/icons/bootstrap/caret-down-square.js +0 -1
- package/icons/bootstrap/caret-down.js +0 -1
- package/icons/bootstrap/caret-left-fill.js +0 -1
- package/icons/bootstrap/caret-left-square-fill.js +0 -1
- package/icons/bootstrap/caret-left-square.js +0 -1
- package/icons/bootstrap/caret-left.js +0 -1
- package/icons/bootstrap/caret-right-fill.js +0 -1
- package/icons/bootstrap/caret-right-square-fill.js +0 -1
- package/icons/bootstrap/caret-right-square.js +0 -1
- package/icons/bootstrap/caret-right.js +0 -1
- package/icons/bootstrap/caret-up-fill.js +0 -1
- package/icons/bootstrap/caret-up-square-fill.js +0 -1
- package/icons/bootstrap/caret-up-square.js +0 -1
- package/icons/bootstrap/caret-up.js +0 -1
- package/icons/bootstrap/cart-check-fill.js +0 -1
- package/icons/bootstrap/cart-check.js +0 -1
- package/icons/bootstrap/cart-dash-fill.js +0 -1
- package/icons/bootstrap/cart-dash.js +0 -1
- package/icons/bootstrap/cart-fill.js +0 -1
- package/icons/bootstrap/cart-plus-fill.js +0 -1
- package/icons/bootstrap/cart-plus.js +0 -1
- package/icons/bootstrap/cart-x-fill.js +0 -1
- package/icons/bootstrap/cart-x.js +0 -1
- package/icons/bootstrap/cart.js +0 -1
- package/icons/bootstrap/cart2.js +0 -1
- package/icons/bootstrap/cart3.js +0 -1
- package/icons/bootstrap/cart4.js +0 -1
- package/icons/bootstrap/cash-coin.js +0 -1
- package/icons/bootstrap/cash-stack.js +0 -1
- package/icons/bootstrap/cash.js +0 -1
- package/icons/bootstrap/cassette-fill.js +0 -1
- package/icons/bootstrap/cassette.js +0 -1
- package/icons/bootstrap/cast.js +0 -1
- package/icons/bootstrap/cc-circle-fill.js +0 -1
- package/icons/bootstrap/cc-circle.js +0 -1
- package/icons/bootstrap/cc-square-fill.js +0 -1
- package/icons/bootstrap/cc-square.js +0 -1
- package/icons/bootstrap/chat-dots-fill.js +0 -1
- package/icons/bootstrap/chat-dots.js +0 -1
- package/icons/bootstrap/chat-fill.js +0 -1
- package/icons/bootstrap/chat-heart-fill.js +0 -1
- package/icons/bootstrap/chat-heart.js +0 -1
- package/icons/bootstrap/chat-left-dots-fill.js +0 -1
- package/icons/bootstrap/chat-left-dots.js +0 -1
- package/icons/bootstrap/chat-left-fill.js +0 -1
- package/icons/bootstrap/chat-left-heart-fill.js +0 -1
- package/icons/bootstrap/chat-left-heart.js +0 -1
- package/icons/bootstrap/chat-left-quote-fill.js +0 -1
- package/icons/bootstrap/chat-left-quote.js +0 -1
- package/icons/bootstrap/chat-left-text-fill.js +0 -1
- package/icons/bootstrap/chat-left-text.js +0 -1
- package/icons/bootstrap/chat-left.js +0 -1
- package/icons/bootstrap/chat-quote-fill.js +0 -1
- package/icons/bootstrap/chat-quote.js +0 -1
- package/icons/bootstrap/chat-right-dots-fill.js +0 -1
- package/icons/bootstrap/chat-right-dots.js +0 -1
- package/icons/bootstrap/chat-right-fill.js +0 -1
- package/icons/bootstrap/chat-right-heart-fill.js +0 -1
- package/icons/bootstrap/chat-right-heart.js +0 -1
- package/icons/bootstrap/chat-right-quote-fill.js +0 -1
- package/icons/bootstrap/chat-right-quote.js +0 -1
- package/icons/bootstrap/chat-right-text-fill.js +0 -1
- package/icons/bootstrap/chat-right-text.js +0 -1
- package/icons/bootstrap/chat-right.js +0 -1
- package/icons/bootstrap/chat-square-dots-fill.js +0 -1
- package/icons/bootstrap/chat-square-dots.js +0 -1
- package/icons/bootstrap/chat-square-fill.js +0 -1
- package/icons/bootstrap/chat-square-heart-fill.js +0 -1
- package/icons/bootstrap/chat-square-heart.js +0 -1
- package/icons/bootstrap/chat-square-quote-fill.js +0 -1
- package/icons/bootstrap/chat-square-quote.js +0 -1
- package/icons/bootstrap/chat-square-text-fill.js +0 -1
- package/icons/bootstrap/chat-square-text.js +0 -1
- package/icons/bootstrap/chat-square.js +0 -1
- package/icons/bootstrap/chat-text-fill.js +0 -1
- package/icons/bootstrap/chat-text.js +0 -1
- package/icons/bootstrap/chat.js +0 -1
- package/icons/bootstrap/check-all.js +0 -1
- package/icons/bootstrap/check-circle-fill.js +0 -1
- package/icons/bootstrap/check-circle.js +0 -1
- package/icons/bootstrap/check-lg.js +0 -1
- package/icons/bootstrap/check-square-fill.js +0 -1
- package/icons/bootstrap/check-square.js +0 -1
- package/icons/bootstrap/check.js +0 -1
- package/icons/bootstrap/check2-all.js +0 -1
- package/icons/bootstrap/check2-circle.js +0 -1
- package/icons/bootstrap/check2-square.js +0 -1
- package/icons/bootstrap/check2.js +0 -1
- package/icons/bootstrap/chevron-bar-contract.js +0 -1
- package/icons/bootstrap/chevron-bar-down.js +0 -1
- package/icons/bootstrap/chevron-bar-expand.js +0 -1
- package/icons/bootstrap/chevron-bar-left.js +0 -1
- package/icons/bootstrap/chevron-bar-right.js +0 -1
- package/icons/bootstrap/chevron-bar-up.js +0 -1
- package/icons/bootstrap/chevron-compact-down.js +0 -1
- package/icons/bootstrap/chevron-compact-left.js +0 -1
- package/icons/bootstrap/chevron-compact-right.js +0 -1
- package/icons/bootstrap/chevron-compact-up.js +0 -1
- package/icons/bootstrap/chevron-contract.js +0 -1
- package/icons/bootstrap/chevron-double-down.js +0 -1
- package/icons/bootstrap/chevron-double-left.js +0 -1
- package/icons/bootstrap/chevron-double-right.js +0 -1
- package/icons/bootstrap/chevron-double-up.js +0 -1
- package/icons/bootstrap/chevron-down.js +0 -1
- package/icons/bootstrap/chevron-expand.js +0 -1
- package/icons/bootstrap/chevron-left.js +0 -1
- package/icons/bootstrap/chevron-right.js +0 -1
- package/icons/bootstrap/chevron-up.js +0 -1
- package/icons/bootstrap/circle-fill.js +0 -1
- package/icons/bootstrap/circle-half.js +0 -1
- package/icons/bootstrap/circle-square.js +0 -1
- package/icons/bootstrap/circle.js +0 -1
- package/icons/bootstrap/clipboard-check-fill.js +0 -1
- package/icons/bootstrap/clipboard-check.js +0 -1
- package/icons/bootstrap/clipboard-data-fill.js +0 -1
- package/icons/bootstrap/clipboard-data.js +0 -1
- package/icons/bootstrap/clipboard-fill.js +0 -1
- package/icons/bootstrap/clipboard-heart-fill.js +0 -1
- package/icons/bootstrap/clipboard-heart.js +0 -1
- package/icons/bootstrap/clipboard-minus-fill.js +0 -1
- package/icons/bootstrap/clipboard-minus.js +0 -1
- package/icons/bootstrap/clipboard-plus-fill.js +0 -1
- package/icons/bootstrap/clipboard-plus.js +0 -1
- package/icons/bootstrap/clipboard-pulse.js +0 -1
- package/icons/bootstrap/clipboard-x-fill.js +0 -1
- package/icons/bootstrap/clipboard-x.js +0 -1
- package/icons/bootstrap/clipboard.js +0 -1
- package/icons/bootstrap/clipboard2-check-fill.js +0 -1
- package/icons/bootstrap/clipboard2-check.js +0 -1
- package/icons/bootstrap/clipboard2-data-fill.js +0 -1
- package/icons/bootstrap/clipboard2-data.js +0 -1
- package/icons/bootstrap/clipboard2-fill.js +0 -1
- package/icons/bootstrap/clipboard2-heart-fill.js +0 -1
- package/icons/bootstrap/clipboard2-heart.js +0 -1
- package/icons/bootstrap/clipboard2-minus-fill.js +0 -1
- package/icons/bootstrap/clipboard2-minus.js +0 -1
- package/icons/bootstrap/clipboard2-plus-fill.js +0 -1
- package/icons/bootstrap/clipboard2-plus.js +0 -1
- package/icons/bootstrap/clipboard2-pulse-fill.js +0 -1
- package/icons/bootstrap/clipboard2-pulse.js +0 -1
- package/icons/bootstrap/clipboard2-x-fill.js +0 -1
- package/icons/bootstrap/clipboard2-x.js +0 -1
- package/icons/bootstrap/clipboard2.js +0 -1
- package/icons/bootstrap/clock-fill.js +0 -1
- package/icons/bootstrap/clock-history.js +0 -1
- package/icons/bootstrap/clock.js +0 -1
- package/icons/bootstrap/cloud-arrow-down-fill.js +0 -1
- package/icons/bootstrap/cloud-arrow-down.js +0 -1
- package/icons/bootstrap/cloud-arrow-up-fill.js +0 -1
- package/icons/bootstrap/cloud-arrow-up.js +0 -1
- package/icons/bootstrap/cloud-check-fill.js +0 -1
- package/icons/bootstrap/cloud-check.js +0 -1
- package/icons/bootstrap/cloud-download-fill.js +0 -1
- package/icons/bootstrap/cloud-download.js +0 -1
- package/icons/bootstrap/cloud-drizzle-fill.js +0 -1
- package/icons/bootstrap/cloud-drizzle.js +0 -1
- package/icons/bootstrap/cloud-fill.js +0 -1
- package/icons/bootstrap/cloud-fog-fill.js +0 -1
- package/icons/bootstrap/cloud-fog.js +0 -1
- package/icons/bootstrap/cloud-fog2-fill.js +0 -1
- package/icons/bootstrap/cloud-fog2.js +0 -1
- package/icons/bootstrap/cloud-hail-fill.js +0 -1
- package/icons/bootstrap/cloud-hail.js +0 -1
- package/icons/bootstrap/cloud-haze-fill.js +0 -1
- package/icons/bootstrap/cloud-haze.js +0 -1
- package/icons/bootstrap/cloud-haze2-fill.js +0 -1
- package/icons/bootstrap/cloud-haze2.js +0 -1
- package/icons/bootstrap/cloud-lightning-fill.js +0 -1
- package/icons/bootstrap/cloud-lightning-rain-fill.js +0 -1
- package/icons/bootstrap/cloud-lightning-rain.js +0 -1
- package/icons/bootstrap/cloud-lightning.js +0 -1
- package/icons/bootstrap/cloud-minus-fill.js +0 -1
- package/icons/bootstrap/cloud-minus.js +0 -1
- package/icons/bootstrap/cloud-moon-fill.js +0 -1
- package/icons/bootstrap/cloud-moon.js +0 -1
- package/icons/bootstrap/cloud-plus-fill.js +0 -1
- package/icons/bootstrap/cloud-plus.js +0 -1
- package/icons/bootstrap/cloud-rain-fill.js +0 -1
- package/icons/bootstrap/cloud-rain-heavy-fill.js +0 -1
- package/icons/bootstrap/cloud-rain-heavy.js +0 -1
- package/icons/bootstrap/cloud-rain.js +0 -1
- package/icons/bootstrap/cloud-slash-fill.js +0 -1
- package/icons/bootstrap/cloud-slash.js +0 -1
- package/icons/bootstrap/cloud-sleet-fill.js +0 -1
- package/icons/bootstrap/cloud-sleet.js +0 -1
- package/icons/bootstrap/cloud-snow-fill.js +0 -1
- package/icons/bootstrap/cloud-snow.js +0 -1
- package/icons/bootstrap/cloud-sun-fill.js +0 -1
- package/icons/bootstrap/cloud-sun.js +0 -1
- package/icons/bootstrap/cloud-upload-fill.js +0 -1
- package/icons/bootstrap/cloud-upload.js +0 -1
- package/icons/bootstrap/cloud.js +0 -1
- package/icons/bootstrap/clouds-fill.js +0 -1
- package/icons/bootstrap/clouds.js +0 -1
- package/icons/bootstrap/cloudy-fill.js +0 -1
- package/icons/bootstrap/cloudy.js +0 -1
- package/icons/bootstrap/code-slash.js +0 -1
- package/icons/bootstrap/code-square.js +0 -1
- package/icons/bootstrap/code.js +0 -1
- package/icons/bootstrap/coin.js +0 -1
- package/icons/bootstrap/collection-fill.js +0 -1
- package/icons/bootstrap/collection-play-fill.js +0 -1
- package/icons/bootstrap/collection-play.js +0 -1
- package/icons/bootstrap/collection.js +0 -1
- package/icons/bootstrap/columns-gap.js +0 -1
- package/icons/bootstrap/columns.js +0 -1
- package/icons/bootstrap/command.js +0 -1
- package/icons/bootstrap/compass-fill.js +0 -1
- package/icons/bootstrap/compass.js +0 -1
- package/icons/bootstrap/cone-striped.js +0 -1
- package/icons/bootstrap/cone.js +0 -1
- package/icons/bootstrap/controller.js +0 -1
- package/icons/bootstrap/cookie.js +0 -1
- package/icons/bootstrap/copy.js +0 -1
- package/icons/bootstrap/cpu-fill.js +0 -1
- package/icons/bootstrap/cpu.js +0 -1
- package/icons/bootstrap/credit-card-2-back-fill.js +0 -1
- package/icons/bootstrap/credit-card-2-back.js +0 -1
- package/icons/bootstrap/credit-card-2-front-fill.js +0 -1
- package/icons/bootstrap/credit-card-2-front.js +0 -1
- package/icons/bootstrap/credit-card-fill.js +0 -1
- package/icons/bootstrap/credit-card.js +0 -1
- package/icons/bootstrap/crop.js +0 -1
- package/icons/bootstrap/crosshair.js +0 -1
- package/icons/bootstrap/crosshair2.js +0 -1
- package/icons/bootstrap/cup-fill.js +0 -1
- package/icons/bootstrap/cup-hot-fill.js +0 -1
- package/icons/bootstrap/cup-hot.js +0 -1
- package/icons/bootstrap/cup-straw.js +0 -1
- package/icons/bootstrap/cup.js +0 -1
- package/icons/bootstrap/currency-bitcoin.js +0 -1
- package/icons/bootstrap/currency-dollar.js +0 -1
- package/icons/bootstrap/currency-euro.js +0 -1
- package/icons/bootstrap/currency-exchange.js +0 -1
- package/icons/bootstrap/currency-pound.js +0 -1
- package/icons/bootstrap/currency-rupee.js +0 -1
- package/icons/bootstrap/currency-yen.js +0 -1
- package/icons/bootstrap/cursor-fill.js +0 -1
- package/icons/bootstrap/cursor-text.js +0 -1
- package/icons/bootstrap/cursor.js +0 -1
- package/icons/bootstrap/dash-circle-dotted.js +0 -1
- package/icons/bootstrap/dash-circle-fill.js +0 -1
- package/icons/bootstrap/dash-circle.js +0 -1
- package/icons/bootstrap/dash-lg.js +0 -1
- package/icons/bootstrap/dash-square-dotted.js +0 -1
- package/icons/bootstrap/dash-square-fill.js +0 -1
- package/icons/bootstrap/dash-square.js +0 -1
- package/icons/bootstrap/dash.js +0 -1
- package/icons/bootstrap/database-add.js +0 -1
- package/icons/bootstrap/database-check.js +0 -1
- package/icons/bootstrap/database-dash.js +0 -1
- package/icons/bootstrap/database-down.js +0 -1
- package/icons/bootstrap/database-exclamation.js +0 -1
- package/icons/bootstrap/database-fill-add.js +0 -1
- package/icons/bootstrap/database-fill-check.js +0 -1
- package/icons/bootstrap/database-fill-dash.js +0 -1
- package/icons/bootstrap/database-fill-down.js +0 -1
- package/icons/bootstrap/database-fill-exclamation.js +0 -1
- package/icons/bootstrap/database-fill-gear.js +0 -1
- package/icons/bootstrap/database-fill-lock.js +0 -1
- package/icons/bootstrap/database-fill-slash.js +0 -1
- package/icons/bootstrap/database-fill-up.js +0 -1
- package/icons/bootstrap/database-fill-x.js +0 -1
- package/icons/bootstrap/database-fill.js +0 -1
- package/icons/bootstrap/database-gear.js +0 -1
- package/icons/bootstrap/database-lock.js +0 -1
- package/icons/bootstrap/database-slash.js +0 -1
- package/icons/bootstrap/database-up.js +0 -1
- package/icons/bootstrap/database-x.js +0 -1
- package/icons/bootstrap/database.js +0 -1
- package/icons/bootstrap/device-hdd-fill.js +0 -1
- package/icons/bootstrap/device-hdd.js +0 -1
- package/icons/bootstrap/device-ssd-fill.js +0 -1
- package/icons/bootstrap/device-ssd.js +0 -1
- package/icons/bootstrap/diagram-2-fill.js +0 -1
- package/icons/bootstrap/diagram-2.js +0 -1
- package/icons/bootstrap/diagram-3-fill.js +0 -1
- package/icons/bootstrap/diagram-3.js +0 -1
- package/icons/bootstrap/diamond-fill.js +0 -1
- package/icons/bootstrap/diamond-half.js +0 -1
- package/icons/bootstrap/diamond.js +0 -1
- package/icons/bootstrap/dice-1-fill.js +0 -1
- package/icons/bootstrap/dice-1.js +0 -1
- package/icons/bootstrap/dice-2-fill.js +0 -1
- package/icons/bootstrap/dice-2.js +0 -1
- package/icons/bootstrap/dice-3-fill.js +0 -1
- package/icons/bootstrap/dice-3.js +0 -1
- package/icons/bootstrap/dice-4-fill.js +0 -1
- package/icons/bootstrap/dice-4.js +0 -1
- package/icons/bootstrap/dice-5-fill.js +0 -1
- package/icons/bootstrap/dice-5.js +0 -1
- package/icons/bootstrap/dice-6-fill.js +0 -1
- package/icons/bootstrap/dice-6.js +0 -1
- package/icons/bootstrap/disc-fill.js +0 -1
- package/icons/bootstrap/disc.js +0 -1
- package/icons/bootstrap/discord.js +0 -1
- package/icons/bootstrap/display-fill.js +0 -1
- package/icons/bootstrap/display.js +0 -1
- package/icons/bootstrap/displayport-fill.js +0 -1
- package/icons/bootstrap/displayport.js +0 -1
- package/icons/bootstrap/distribute-horizontal.js +0 -1
- package/icons/bootstrap/distribute-vertical.js +0 -1
- package/icons/bootstrap/door-closed-fill.js +0 -1
- package/icons/bootstrap/door-closed.js +0 -1
- package/icons/bootstrap/door-open-fill.js +0 -1
- package/icons/bootstrap/door-open.js +0 -1
- package/icons/bootstrap/dot.js +0 -1
- package/icons/bootstrap/download.js +0 -1
- package/icons/bootstrap/dpad-fill.js +0 -1
- package/icons/bootstrap/dpad.js +0 -1
- package/icons/bootstrap/dribbble.js +0 -1
- package/icons/bootstrap/dropbox.js +0 -1
- package/icons/bootstrap/droplet-fill.js +0 -1
- package/icons/bootstrap/droplet-half.js +0 -1
- package/icons/bootstrap/droplet.js +0 -1
- package/icons/bootstrap/duffle-fill.js +0 -1
- package/icons/bootstrap/duffle.js +0 -1
- package/icons/bootstrap/ear-fill.js +0 -1
- package/icons/bootstrap/ear.js +0 -1
- package/icons/bootstrap/earbuds.js +0 -1
- package/icons/bootstrap/easel-fill.js +0 -1
- package/icons/bootstrap/easel.js +0 -1
- package/icons/bootstrap/easel2-fill.js +0 -1
- package/icons/bootstrap/easel2.js +0 -1
- package/icons/bootstrap/easel3-fill.js +0 -1
- package/icons/bootstrap/easel3.js +0 -1
- package/icons/bootstrap/egg-fill.js +0 -1
- package/icons/bootstrap/egg-fried.js +0 -1
- package/icons/bootstrap/egg.js +0 -1
- package/icons/bootstrap/eject-fill.js +0 -1
- package/icons/bootstrap/eject.js +0 -1
- package/icons/bootstrap/emoji-angry-fill.js +0 -1
- package/icons/bootstrap/emoji-angry.js +0 -1
- package/icons/bootstrap/emoji-astonished-fill.js +0 -1
- package/icons/bootstrap/emoji-astonished.js +0 -1
- package/icons/bootstrap/emoji-dizzy-fill.js +0 -1
- package/icons/bootstrap/emoji-dizzy.js +0 -1
- package/icons/bootstrap/emoji-expressionless-fill.js +0 -1
- package/icons/bootstrap/emoji-expressionless.js +0 -1
- package/icons/bootstrap/emoji-frown-fill.js +0 -1
- package/icons/bootstrap/emoji-frown.js +0 -1
- package/icons/bootstrap/emoji-grimace-fill.js +0 -1
- package/icons/bootstrap/emoji-grimace.js +0 -1
- package/icons/bootstrap/emoji-grin-fill.js +0 -1
- package/icons/bootstrap/emoji-grin.js +0 -1
- package/icons/bootstrap/emoji-heart-eyes-fill.js +0 -1
- package/icons/bootstrap/emoji-heart-eyes.js +0 -1
- package/icons/bootstrap/emoji-kiss-fill.js +0 -1
- package/icons/bootstrap/emoji-kiss.js +0 -1
- package/icons/bootstrap/emoji-laughing-fill.js +0 -1
- package/icons/bootstrap/emoji-laughing.js +0 -1
- package/icons/bootstrap/emoji-neutral-fill.js +0 -1
- package/icons/bootstrap/emoji-neutral.js +0 -1
- package/icons/bootstrap/emoji-smile-fill.js +0 -1
- package/icons/bootstrap/emoji-smile-upside-down-fill.js +0 -1
- package/icons/bootstrap/emoji-smile-upside-down.js +0 -1
- package/icons/bootstrap/emoji-smile.js +0 -1
- package/icons/bootstrap/emoji-sunglasses-fill.js +0 -1
- package/icons/bootstrap/emoji-sunglasses.js +0 -1
- package/icons/bootstrap/emoji-surprise-fill.js +0 -1
- package/icons/bootstrap/emoji-surprise.js +0 -1
- package/icons/bootstrap/emoji-tear-fill.js +0 -1
- package/icons/bootstrap/emoji-tear.js +0 -1
- package/icons/bootstrap/emoji-wink-fill.js +0 -1
- package/icons/bootstrap/emoji-wink.js +0 -1
- package/icons/bootstrap/envelope-arrow-down-fill.js +0 -1
- package/icons/bootstrap/envelope-arrow-down.js +0 -1
- package/icons/bootstrap/envelope-arrow-up-fill.js +0 -1
- package/icons/bootstrap/envelope-arrow-up.js +0 -1
- package/icons/bootstrap/envelope-at-fill.js +0 -1
- package/icons/bootstrap/envelope-at.js +0 -1
- package/icons/bootstrap/envelope-check-fill.js +0 -1
- package/icons/bootstrap/envelope-check.js +0 -1
- package/icons/bootstrap/envelope-dash-fill.js +0 -1
- package/icons/bootstrap/envelope-dash.js +0 -1
- package/icons/bootstrap/envelope-exclamation-fill.js +0 -1
- package/icons/bootstrap/envelope-exclamation.js +0 -1
- package/icons/bootstrap/envelope-fill.js +0 -1
- package/icons/bootstrap/envelope-heart-fill.js +0 -1
- package/icons/bootstrap/envelope-heart.js +0 -1
- package/icons/bootstrap/envelope-open-fill.js +0 -1
- package/icons/bootstrap/envelope-open-heart-fill.js +0 -1
- package/icons/bootstrap/envelope-open-heart.js +0 -1
- package/icons/bootstrap/envelope-open.js +0 -1
- package/icons/bootstrap/envelope-paper-fill.js +0 -1
- package/icons/bootstrap/envelope-paper-heart-fill.js +0 -1
- package/icons/bootstrap/envelope-paper-heart.js +0 -1
- package/icons/bootstrap/envelope-paper.js +0 -1
- package/icons/bootstrap/envelope-plus-fill.js +0 -1
- package/icons/bootstrap/envelope-plus.js +0 -1
- package/icons/bootstrap/envelope-slash-fill.js +0 -1
- package/icons/bootstrap/envelope-slash.js +0 -1
- package/icons/bootstrap/envelope-x-fill.js +0 -1
- package/icons/bootstrap/envelope-x.js +0 -1
- package/icons/bootstrap/envelope.js +0 -1
- package/icons/bootstrap/eraser-fill.js +0 -1
- package/icons/bootstrap/eraser.js +0 -1
- package/icons/bootstrap/escape.js +0 -1
- package/icons/bootstrap/ethernet.js +0 -1
- package/icons/bootstrap/ev-front-fill.js +0 -1
- package/icons/bootstrap/ev-front.js +0 -1
- package/icons/bootstrap/ev-station-fill.js +0 -1
- package/icons/bootstrap/ev-station.js +0 -1
- package/icons/bootstrap/exclamation-circle-fill.js +0 -1
- package/icons/bootstrap/exclamation-circle.js +0 -1
- package/icons/bootstrap/exclamation-diamond-fill.js +0 -1
- package/icons/bootstrap/exclamation-diamond.js +0 -1
- package/icons/bootstrap/exclamation-lg.js +0 -1
- package/icons/bootstrap/exclamation-octagon-fill.js +0 -1
- package/icons/bootstrap/exclamation-octagon.js +0 -1
- package/icons/bootstrap/exclamation-square-fill.js +0 -1
- package/icons/bootstrap/exclamation-square.js +0 -1
- package/icons/bootstrap/exclamation-triangle-fill.js +0 -1
- package/icons/bootstrap/exclamation-triangle.js +0 -1
- package/icons/bootstrap/exclamation.js +0 -1
- package/icons/bootstrap/exclude.js +0 -1
- package/icons/bootstrap/explicit-fill.js +0 -1
- package/icons/bootstrap/explicit.js +0 -1
- package/icons/bootstrap/exposure.js +0 -1
- package/icons/bootstrap/eye-fill.js +0 -1
- package/icons/bootstrap/eye-slash-fill.js +0 -1
- package/icons/bootstrap/eye-slash.js +0 -1
- package/icons/bootstrap/eye.js +0 -1
- package/icons/bootstrap/eyedropper.js +0 -1
- package/icons/bootstrap/eyeglasses.js +0 -1
- package/icons/bootstrap/facebook.js +0 -1
- package/icons/bootstrap/fan.js +0 -1
- package/icons/bootstrap/fast-forward-btn-fill.js +0 -1
- package/icons/bootstrap/fast-forward-btn.js +0 -1
- package/icons/bootstrap/fast-forward-circle-fill.js +0 -1
- package/icons/bootstrap/fast-forward-circle.js +0 -1
- package/icons/bootstrap/fast-forward-fill.js +0 -1
- package/icons/bootstrap/fast-forward.js +0 -1
- package/icons/bootstrap/feather.js +0 -1
- package/icons/bootstrap/feather2.js +0 -1
- package/icons/bootstrap/file-arrow-down-fill.js +0 -1
- package/icons/bootstrap/file-arrow-down.js +0 -1
- package/icons/bootstrap/file-arrow-up-fill.js +0 -1
- package/icons/bootstrap/file-arrow-up.js +0 -1
- package/icons/bootstrap/file-bar-graph-fill.js +0 -1
- package/icons/bootstrap/file-bar-graph.js +0 -1
- package/icons/bootstrap/file-binary-fill.js +0 -1
- package/icons/bootstrap/file-binary.js +0 -1
- package/icons/bootstrap/file-break-fill.js +0 -1
- package/icons/bootstrap/file-break.js +0 -1
- package/icons/bootstrap/file-check-fill.js +0 -1
- package/icons/bootstrap/file-check.js +0 -1
- package/icons/bootstrap/file-code-fill.js +0 -1
- package/icons/bootstrap/file-code.js +0 -1
- package/icons/bootstrap/file-diff-fill.js +0 -1
- package/icons/bootstrap/file-diff.js +0 -1
- package/icons/bootstrap/file-earmark-arrow-down-fill.js +0 -1
- package/icons/bootstrap/file-earmark-arrow-down.js +0 -1
- package/icons/bootstrap/file-earmark-arrow-up-fill.js +0 -1
- package/icons/bootstrap/file-earmark-arrow-up.js +0 -1
- package/icons/bootstrap/file-earmark-bar-graph-fill.js +0 -1
- package/icons/bootstrap/file-earmark-bar-graph.js +0 -1
- package/icons/bootstrap/file-earmark-binary-fill.js +0 -1
- package/icons/bootstrap/file-earmark-binary.js +0 -1
- package/icons/bootstrap/file-earmark-break-fill.js +0 -1
- package/icons/bootstrap/file-earmark-break.js +0 -1
- package/icons/bootstrap/file-earmark-check-fill.js +0 -1
- package/icons/bootstrap/file-earmark-check.js +0 -1
- package/icons/bootstrap/file-earmark-code-fill.js +0 -1
- package/icons/bootstrap/file-earmark-code.js +0 -1
- package/icons/bootstrap/file-earmark-diff-fill.js +0 -1
- package/icons/bootstrap/file-earmark-diff.js +0 -1
- package/icons/bootstrap/file-earmark-easel-fill.js +0 -1
- package/icons/bootstrap/file-earmark-easel.js +0 -1
- package/icons/bootstrap/file-earmark-excel-fill.js +0 -1
- package/icons/bootstrap/file-earmark-excel.js +0 -1
- package/icons/bootstrap/file-earmark-fill.js +0 -1
- package/icons/bootstrap/file-earmark-font-fill.js +0 -1
- package/icons/bootstrap/file-earmark-font.js +0 -1
- package/icons/bootstrap/file-earmark-image-fill.js +0 -1
- package/icons/bootstrap/file-earmark-image.js +0 -1
- package/icons/bootstrap/file-earmark-lock-fill.js +0 -1
- package/icons/bootstrap/file-earmark-lock.js +0 -1
- package/icons/bootstrap/file-earmark-lock2-fill.js +0 -1
- package/icons/bootstrap/file-earmark-lock2.js +0 -1
- package/icons/bootstrap/file-earmark-medical-fill.js +0 -1
- package/icons/bootstrap/file-earmark-medical.js +0 -1
- package/icons/bootstrap/file-earmark-minus-fill.js +0 -1
- package/icons/bootstrap/file-earmark-minus.js +0 -1
- package/icons/bootstrap/file-earmark-music-fill.js +0 -1
- package/icons/bootstrap/file-earmark-music.js +0 -1
- package/icons/bootstrap/file-earmark-pdf-fill.js +0 -1
- package/icons/bootstrap/file-earmark-pdf.js +0 -1
- package/icons/bootstrap/file-earmark-person-fill.js +0 -1
- package/icons/bootstrap/file-earmark-person.js +0 -1
- package/icons/bootstrap/file-earmark-play-fill.js +0 -1
- package/icons/bootstrap/file-earmark-play.js +0 -1
- package/icons/bootstrap/file-earmark-plus-fill.js +0 -1
- package/icons/bootstrap/file-earmark-plus.js +0 -1
- package/icons/bootstrap/file-earmark-post-fill.js +0 -1
- package/icons/bootstrap/file-earmark-post.js +0 -1
- package/icons/bootstrap/file-earmark-ppt-fill.js +0 -1
- package/icons/bootstrap/file-earmark-ppt.js +0 -1
- package/icons/bootstrap/file-earmark-richtext-fill.js +0 -1
- package/icons/bootstrap/file-earmark-richtext.js +0 -1
- package/icons/bootstrap/file-earmark-ruled-fill.js +0 -1
- package/icons/bootstrap/file-earmark-ruled.js +0 -1
- package/icons/bootstrap/file-earmark-slides-fill.js +0 -1
- package/icons/bootstrap/file-earmark-slides.js +0 -1
- package/icons/bootstrap/file-earmark-spreadsheet-fill.js +0 -1
- package/icons/bootstrap/file-earmark-spreadsheet.js +0 -1
- package/icons/bootstrap/file-earmark-text-fill.js +0 -1
- package/icons/bootstrap/file-earmark-text.js +0 -1
- package/icons/bootstrap/file-earmark-word-fill.js +0 -1
- package/icons/bootstrap/file-earmark-word.js +0 -1
- package/icons/bootstrap/file-earmark-x-fill.js +0 -1
- package/icons/bootstrap/file-earmark-x.js +0 -1
- package/icons/bootstrap/file-earmark-zip-fill.js +0 -1
- package/icons/bootstrap/file-earmark-zip.js +0 -1
- package/icons/bootstrap/file-earmark.js +0 -1
- package/icons/bootstrap/file-easel-fill.js +0 -1
- package/icons/bootstrap/file-easel.js +0 -1
- package/icons/bootstrap/file-excel-fill.js +0 -1
- package/icons/bootstrap/file-excel.js +0 -1
- package/icons/bootstrap/file-fill.js +0 -1
- package/icons/bootstrap/file-font-fill.js +0 -1
- package/icons/bootstrap/file-font.js +0 -1
- package/icons/bootstrap/file-image-fill.js +0 -1
- package/icons/bootstrap/file-image.js +0 -1
- package/icons/bootstrap/file-lock-fill.js +0 -1
- package/icons/bootstrap/file-lock.js +0 -1
- package/icons/bootstrap/file-lock2-fill.js +0 -1
- package/icons/bootstrap/file-lock2.js +0 -1
- package/icons/bootstrap/file-medical-fill.js +0 -1
- package/icons/bootstrap/file-medical.js +0 -1
- package/icons/bootstrap/file-minus-fill.js +0 -1
- package/icons/bootstrap/file-minus.js +0 -1
- package/icons/bootstrap/file-music-fill.js +0 -1
- package/icons/bootstrap/file-music.js +0 -1
- package/icons/bootstrap/file-pdf-fill.js +0 -1
- package/icons/bootstrap/file-pdf.js +0 -1
- package/icons/bootstrap/file-person-fill.js +0 -1
- package/icons/bootstrap/file-person.js +0 -1
- package/icons/bootstrap/file-play-fill.js +0 -1
- package/icons/bootstrap/file-play.js +0 -1
- package/icons/bootstrap/file-plus-fill.js +0 -1
- package/icons/bootstrap/file-plus.js +0 -1
- package/icons/bootstrap/file-post-fill.js +0 -1
- package/icons/bootstrap/file-post.js +0 -1
- package/icons/bootstrap/file-ppt-fill.js +0 -1
- package/icons/bootstrap/file-ppt.js +0 -1
- package/icons/bootstrap/file-richtext-fill.js +0 -1
- package/icons/bootstrap/file-richtext.js +0 -1
- package/icons/bootstrap/file-ruled-fill.js +0 -1
- package/icons/bootstrap/file-ruled.js +0 -1
- package/icons/bootstrap/file-slides-fill.js +0 -1
- package/icons/bootstrap/file-slides.js +0 -1
- package/icons/bootstrap/file-spreadsheet-fill.js +0 -1
- package/icons/bootstrap/file-spreadsheet.js +0 -1
- package/icons/bootstrap/file-text-fill.js +0 -1
- package/icons/bootstrap/file-text.js +0 -1
- package/icons/bootstrap/file-word-fill.js +0 -1
- package/icons/bootstrap/file-word.js +0 -1
- package/icons/bootstrap/file-x-fill.js +0 -1
- package/icons/bootstrap/file-x.js +0 -1
- package/icons/bootstrap/file-zip-fill.js +0 -1
- package/icons/bootstrap/file-zip.js +0 -1
- package/icons/bootstrap/file.js +0 -1
- package/icons/bootstrap/files-alt.js +0 -1
- package/icons/bootstrap/files.js +0 -1
- package/icons/bootstrap/filetype-aac.js +0 -1
- package/icons/bootstrap/filetype-ai.js +0 -1
- package/icons/bootstrap/filetype-bmp.js +0 -1
- package/icons/bootstrap/filetype-cs.js +0 -1
- package/icons/bootstrap/filetype-css.js +0 -1
- package/icons/bootstrap/filetype-csv.js +0 -1
- package/icons/bootstrap/filetype-doc.js +0 -1
- package/icons/bootstrap/filetype-docx.js +0 -1
- package/icons/bootstrap/filetype-exe.js +0 -1
- package/icons/bootstrap/filetype-gif.js +0 -1
- package/icons/bootstrap/filetype-heic.js +0 -1
- package/icons/bootstrap/filetype-html.js +0 -1
- package/icons/bootstrap/filetype-java.js +0 -1
- package/icons/bootstrap/filetype-jpg.js +0 -1
- package/icons/bootstrap/filetype-js.js +0 -1
- package/icons/bootstrap/filetype-json.js +0 -1
- package/icons/bootstrap/filetype-jsx.js +0 -1
- package/icons/bootstrap/filetype-key.js +0 -1
- package/icons/bootstrap/filetype-m4p.js +0 -1
- package/icons/bootstrap/filetype-md.js +0 -1
- package/icons/bootstrap/filetype-mdx.js +0 -1
- package/icons/bootstrap/filetype-mov.js +0 -1
- package/icons/bootstrap/filetype-mp3.js +0 -1
- package/icons/bootstrap/filetype-mp4.js +0 -1
- package/icons/bootstrap/filetype-otf.js +0 -1
- package/icons/bootstrap/filetype-pdf.js +0 -1
- package/icons/bootstrap/filetype-php.js +0 -1
- package/icons/bootstrap/filetype-png.js +0 -1
- package/icons/bootstrap/filetype-ppt.js +0 -1
- package/icons/bootstrap/filetype-pptx.js +0 -1
- package/icons/bootstrap/filetype-psd.js +0 -1
- package/icons/bootstrap/filetype-py.js +0 -1
- package/icons/bootstrap/filetype-raw.js +0 -1
- package/icons/bootstrap/filetype-rb.js +0 -1
- package/icons/bootstrap/filetype-sass.js +0 -1
- package/icons/bootstrap/filetype-scss.js +0 -1
- package/icons/bootstrap/filetype-sh.js +0 -1
- package/icons/bootstrap/filetype-sql.js +0 -1
- package/icons/bootstrap/filetype-svg.js +0 -1
- package/icons/bootstrap/filetype-tiff.js +0 -1
- package/icons/bootstrap/filetype-tsx.js +0 -1
- package/icons/bootstrap/filetype-ttf.js +0 -1
- package/icons/bootstrap/filetype-txt.js +0 -1
- package/icons/bootstrap/filetype-wav.js +0 -1
- package/icons/bootstrap/filetype-woff.js +0 -1
- package/icons/bootstrap/filetype-xls.js +0 -1
- package/icons/bootstrap/filetype-xlsx.js +0 -1
- package/icons/bootstrap/filetype-xml.js +0 -1
- package/icons/bootstrap/filetype-yml.js +0 -1
- package/icons/bootstrap/film.js +0 -1
- package/icons/bootstrap/filter-circle-fill.js +0 -1
- package/icons/bootstrap/filter-circle.js +0 -1
- package/icons/bootstrap/filter-left.js +0 -1
- package/icons/bootstrap/filter-right.js +0 -1
- package/icons/bootstrap/filter-square-fill.js +0 -1
- package/icons/bootstrap/filter-square.js +0 -1
- package/icons/bootstrap/filter.js +0 -1
- package/icons/bootstrap/fingerprint.js +0 -1
- package/icons/bootstrap/fire.js +0 -1
- package/icons/bootstrap/flag-fill.js +0 -1
- package/icons/bootstrap/flag.js +0 -1
- package/icons/bootstrap/floppy-fill.js +0 -1
- package/icons/bootstrap/floppy.js +0 -1
- package/icons/bootstrap/floppy2-fill.js +0 -1
- package/icons/bootstrap/floppy2.js +0 -1
- package/icons/bootstrap/flower1.js +0 -1
- package/icons/bootstrap/flower2.js +0 -1
- package/icons/bootstrap/flower3.js +0 -1
- package/icons/bootstrap/folder-check.js +0 -1
- package/icons/bootstrap/folder-fill.js +0 -1
- package/icons/bootstrap/folder-minus.js +0 -1
- package/icons/bootstrap/folder-plus.js +0 -1
- package/icons/bootstrap/folder-symlink-fill.js +0 -1
- package/icons/bootstrap/folder-symlink.js +0 -1
- package/icons/bootstrap/folder-x.js +0 -1
- package/icons/bootstrap/folder.js +0 -1
- package/icons/bootstrap/folder2-open.js +0 -1
- package/icons/bootstrap/folder2.js +0 -1
- package/icons/bootstrap/fonts.js +0 -1
- package/icons/bootstrap/forward-fill.js +0 -1
- package/icons/bootstrap/forward.js +0 -1
- package/icons/bootstrap/front.js +0 -1
- package/icons/bootstrap/fuel-pump-diesel-fill.js +0 -1
- package/icons/bootstrap/fuel-pump-diesel.js +0 -1
- package/icons/bootstrap/fuel-pump-fill.js +0 -1
- package/icons/bootstrap/fuel-pump.js +0 -1
- package/icons/bootstrap/fullscreen-exit.js +0 -1
- package/icons/bootstrap/fullscreen.js +0 -1
- package/icons/bootstrap/funnel-fill.js +0 -1
- package/icons/bootstrap/funnel.js +0 -1
- package/icons/bootstrap/gear-fill.js +0 -1
- package/icons/bootstrap/gear-wide-connected.js +0 -1
- package/icons/bootstrap/gear-wide.js +0 -1
- package/icons/bootstrap/gear.js +0 -1
- package/icons/bootstrap/gem.js +0 -1
- package/icons/bootstrap/gender-ambiguous.js +0 -1
- package/icons/bootstrap/gender-female.js +0 -1
- package/icons/bootstrap/gender-male.js +0 -1
- package/icons/bootstrap/gender-neuter.js +0 -1
- package/icons/bootstrap/gender-trans.js +0 -1
- package/icons/bootstrap/geo-alt-fill.js +0 -1
- package/icons/bootstrap/geo-alt.js +0 -1
- package/icons/bootstrap/geo-fill.js +0 -1
- package/icons/bootstrap/geo.js +0 -1
- package/icons/bootstrap/gift-fill.js +0 -1
- package/icons/bootstrap/gift.js +0 -1
- package/icons/bootstrap/git.js +0 -1
- package/icons/bootstrap/github.js +0 -1
- package/icons/bootstrap/gitlab.js +0 -1
- package/icons/bootstrap/globe-americas.js +0 -1
- package/icons/bootstrap/globe-asia-australia.js +0 -1
- package/icons/bootstrap/globe-central-south-asia.js +0 -1
- package/icons/bootstrap/globe-europe-africa.js +0 -1
- package/icons/bootstrap/globe.js +0 -1
- package/icons/bootstrap/globe2.js +0 -1
- package/icons/bootstrap/google-play.js +0 -1
- package/icons/bootstrap/google.js +0 -1
- package/icons/bootstrap/gpu-card.js +0 -1
- package/icons/bootstrap/graph-down-arrow.js +0 -1
- package/icons/bootstrap/graph-down.js +0 -1
- package/icons/bootstrap/graph-up-arrow.js +0 -1
- package/icons/bootstrap/graph-up.js +0 -1
- package/icons/bootstrap/grid-1x2-fill.js +0 -1
- package/icons/bootstrap/grid-1x2.js +0 -1
- package/icons/bootstrap/grid-3x2-gap-fill.js +0 -1
- package/icons/bootstrap/grid-3x2-gap.js +0 -1
- package/icons/bootstrap/grid-3x2.js +0 -1
- package/icons/bootstrap/grid-3x3-gap-fill.js +0 -1
- package/icons/bootstrap/grid-3x3-gap.js +0 -1
- package/icons/bootstrap/grid-3x3.js +0 -1
- package/icons/bootstrap/grid-fill.js +0 -1
- package/icons/bootstrap/grid.js +0 -1
- package/icons/bootstrap/grip-horizontal.js +0 -1
- package/icons/bootstrap/grip-vertical.js +0 -1
- package/icons/bootstrap/h-circle-fill.js +0 -1
- package/icons/bootstrap/h-circle.js +0 -1
- package/icons/bootstrap/h-square-fill.js +0 -1
- package/icons/bootstrap/h-square.js +0 -1
- package/icons/bootstrap/hammer.js +0 -1
- package/icons/bootstrap/hand-index-fill.js +0 -1
- package/icons/bootstrap/hand-index-thumb-fill.js +0 -1
- package/icons/bootstrap/hand-index-thumb.js +0 -1
- package/icons/bootstrap/hand-index.js +0 -1
- package/icons/bootstrap/hand-thumbs-down-fill.js +0 -1
- package/icons/bootstrap/hand-thumbs-down.js +0 -1
- package/icons/bootstrap/hand-thumbs-up-fill.js +0 -1
- package/icons/bootstrap/hand-thumbs-up.js +0 -1
- package/icons/bootstrap/handbag-fill.js +0 -1
- package/icons/bootstrap/handbag.js +0 -1
- package/icons/bootstrap/hash.js +0 -1
- package/icons/bootstrap/hdd-fill.js +0 -1
- package/icons/bootstrap/hdd-network-fill.js +0 -1
- package/icons/bootstrap/hdd-network.js +0 -1
- package/icons/bootstrap/hdd-rack-fill.js +0 -1
- package/icons/bootstrap/hdd-rack.js +0 -1
- package/icons/bootstrap/hdd-stack-fill.js +0 -1
- package/icons/bootstrap/hdd-stack.js +0 -1
- package/icons/bootstrap/hdd.js +0 -1
- package/icons/bootstrap/hdmi-fill.js +0 -1
- package/icons/bootstrap/hdmi.js +0 -1
- package/icons/bootstrap/headphones.js +0 -1
- package/icons/bootstrap/headset-vr.js +0 -1
- package/icons/bootstrap/headset.js +0 -1
- package/icons/bootstrap/heart-arrow.js +0 -1
- package/icons/bootstrap/heart-fill.js +0 -1
- package/icons/bootstrap/heart-half.js +0 -1
- package/icons/bootstrap/heart-pulse-fill.js +0 -1
- package/icons/bootstrap/heart-pulse.js +0 -1
- package/icons/bootstrap/heart.js +0 -1
- package/icons/bootstrap/heartbreak-fill.js +0 -1
- package/icons/bootstrap/heartbreak.js +0 -1
- package/icons/bootstrap/hearts.js +0 -1
- package/icons/bootstrap/heptagon-fill.js +0 -1
- package/icons/bootstrap/heptagon-half.js +0 -1
- package/icons/bootstrap/heptagon.js +0 -1
- package/icons/bootstrap/hexagon-fill.js +0 -1
- package/icons/bootstrap/hexagon-half.js +0 -1
- package/icons/bootstrap/hexagon.js +0 -1
- package/icons/bootstrap/highlighter.js +0 -1
- package/icons/bootstrap/highlights.js +0 -1
- package/icons/bootstrap/hospital-fill.js +0 -1
- package/icons/bootstrap/hospital.js +0 -1
- package/icons/bootstrap/hourglass-bottom.js +0 -1
- package/icons/bootstrap/hourglass-split.js +0 -1
- package/icons/bootstrap/hourglass-top.js +0 -1
- package/icons/bootstrap/hourglass.js +0 -1
- package/icons/bootstrap/house-add-fill.js +0 -1
- package/icons/bootstrap/house-add.js +0 -1
- package/icons/bootstrap/house-check-fill.js +0 -1
- package/icons/bootstrap/house-check.js +0 -1
- package/icons/bootstrap/house-dash-fill.js +0 -1
- package/icons/bootstrap/house-dash.js +0 -1
- package/icons/bootstrap/house-door-fill.js +0 -1
- package/icons/bootstrap/house-door.js +0 -1
- package/icons/bootstrap/house-down-fill.js +0 -1
- package/icons/bootstrap/house-down.js +0 -1
- package/icons/bootstrap/house-exclamation-fill.js +0 -1
- package/icons/bootstrap/house-exclamation.js +0 -1
- package/icons/bootstrap/house-fill.js +0 -1
- package/icons/bootstrap/house-gear-fill.js +0 -1
- package/icons/bootstrap/house-gear.js +0 -1
- package/icons/bootstrap/house-heart-fill.js +0 -1
- package/icons/bootstrap/house-heart.js +0 -1
- package/icons/bootstrap/house-lock-fill.js +0 -1
- package/icons/bootstrap/house-lock.js +0 -1
- package/icons/bootstrap/house-slash-fill.js +0 -1
- package/icons/bootstrap/house-slash.js +0 -1
- package/icons/bootstrap/house-up-fill.js +0 -1
- package/icons/bootstrap/house-up.js +0 -1
- package/icons/bootstrap/house-x-fill.js +0 -1
- package/icons/bootstrap/house-x.js +0 -1
- package/icons/bootstrap/house.js +0 -1
- package/icons/bootstrap/houses-fill.js +0 -1
- package/icons/bootstrap/houses.js +0 -1
- package/icons/bootstrap/hr.js +0 -1
- package/icons/bootstrap/hurricane.js +0 -1
- package/icons/bootstrap/hypnotize.js +0 -1
- package/icons/bootstrap/image-alt.js +0 -1
- package/icons/bootstrap/image-fill.js +0 -1
- package/icons/bootstrap/image.js +0 -1
- package/icons/bootstrap/images.js +0 -1
- package/icons/bootstrap/inbox-fill.js +0 -1
- package/icons/bootstrap/inbox.js +0 -1
- package/icons/bootstrap/inboxes-fill.js +0 -1
- package/icons/bootstrap/inboxes.js +0 -1
- package/icons/bootstrap/incognito.js +0 -1
- package/icons/bootstrap/indent.js +0 -1
- package/icons/bootstrap/infinity.js +0 -1
- package/icons/bootstrap/info-circle-fill.js +0 -1
- package/icons/bootstrap/info-circle.js +0 -1
- package/icons/bootstrap/info-lg.js +0 -1
- package/icons/bootstrap/info-square-fill.js +0 -1
- package/icons/bootstrap/info-square.js +0 -1
- package/icons/bootstrap/info.js +0 -1
- package/icons/bootstrap/input-cursor-text.js +0 -1
- package/icons/bootstrap/input-cursor.js +0 -1
- package/icons/bootstrap/instagram.js +0 -1
- package/icons/bootstrap/intersect.js +0 -1
- package/icons/bootstrap/journal-album.js +0 -1
- package/icons/bootstrap/journal-arrow-down.js +0 -1
- package/icons/bootstrap/journal-arrow-up.js +0 -1
- package/icons/bootstrap/journal-bookmark-fill.js +0 -1
- package/icons/bootstrap/journal-bookmark.js +0 -1
- package/icons/bootstrap/journal-check.js +0 -1
- package/icons/bootstrap/journal-code.js +0 -1
- package/icons/bootstrap/journal-medical.js +0 -1
- package/icons/bootstrap/journal-minus.js +0 -1
- package/icons/bootstrap/journal-plus.js +0 -1
- package/icons/bootstrap/journal-richtext.js +0 -1
- package/icons/bootstrap/journal-text.js +0 -1
- package/icons/bootstrap/journal-x.js +0 -1
- package/icons/bootstrap/journal.js +0 -1
- package/icons/bootstrap/journals.js +0 -1
- package/icons/bootstrap/joystick.js +0 -1
- package/icons/bootstrap/justify-left.js +0 -1
- package/icons/bootstrap/justify-right.js +0 -1
- package/icons/bootstrap/justify.js +0 -1
- package/icons/bootstrap/kanban-fill.js +0 -1
- package/icons/bootstrap/kanban.js +0 -1
- package/icons/bootstrap/key-fill.js +0 -1
- package/icons/bootstrap/key.js +0 -1
- package/icons/bootstrap/keyboard-fill.js +0 -1
- package/icons/bootstrap/keyboard.js +0 -1
- package/icons/bootstrap/ladder.js +0 -1
- package/icons/bootstrap/lamp-fill.js +0 -1
- package/icons/bootstrap/lamp.js +0 -1
- package/icons/bootstrap/laptop-fill.js +0 -1
- package/icons/bootstrap/laptop.js +0 -1
- package/icons/bootstrap/layer-backward.js +0 -1
- package/icons/bootstrap/layer-forward.js +0 -1
- package/icons/bootstrap/layers-fill.js +0 -1
- package/icons/bootstrap/layers-half.js +0 -1
- package/icons/bootstrap/layers.js +0 -1
- package/icons/bootstrap/layout-sidebar-inset-reverse.js +0 -1
- package/icons/bootstrap/layout-sidebar-inset.js +0 -1
- package/icons/bootstrap/layout-sidebar-reverse.js +0 -1
- package/icons/bootstrap/layout-sidebar.js +0 -1
- package/icons/bootstrap/layout-split.js +0 -1
- package/icons/bootstrap/layout-text-sidebar-reverse.js +0 -1
- package/icons/bootstrap/layout-text-sidebar.js +0 -1
- package/icons/bootstrap/layout-text-window-reverse.js +0 -1
- package/icons/bootstrap/layout-text-window.js +0 -1
- package/icons/bootstrap/layout-three-columns.js +0 -1
- package/icons/bootstrap/layout-wtf.js +0 -1
- package/icons/bootstrap/life-preserver.js +0 -1
- package/icons/bootstrap/lightbulb-fill.js +0 -1
- package/icons/bootstrap/lightbulb-off-fill.js +0 -1
- package/icons/bootstrap/lightbulb-off.js +0 -1
- package/icons/bootstrap/lightbulb.js +0 -1
- package/icons/bootstrap/lightning-charge-fill.js +0 -1
- package/icons/bootstrap/lightning-charge.js +0 -1
- package/icons/bootstrap/lightning-fill.js +0 -1
- package/icons/bootstrap/lightning.js +0 -1
- package/icons/bootstrap/line.js +0 -1
- package/icons/bootstrap/link-45deg.js +0 -1
- package/icons/bootstrap/link.js +0 -1
- package/icons/bootstrap/linkedin.js +0 -1
- package/icons/bootstrap/list-check.js +0 -1
- package/icons/bootstrap/list-columns-reverse.js +0 -1
- package/icons/bootstrap/list-columns.js +0 -1
- package/icons/bootstrap/list-nested.js +0 -1
- package/icons/bootstrap/list-ol.js +0 -1
- package/icons/bootstrap/list-stars.js +0 -1
- package/icons/bootstrap/list-task.js +0 -1
- package/icons/bootstrap/list-ul.js +0 -1
- package/icons/bootstrap/list.js +0 -1
- package/icons/bootstrap/lock-fill.js +0 -1
- package/icons/bootstrap/lock.js +0 -1
- package/icons/bootstrap/luggage-fill.js +0 -1
- package/icons/bootstrap/luggage.js +0 -1
- package/icons/bootstrap/lungs-fill.js +0 -1
- package/icons/bootstrap/lungs.js +0 -1
- package/icons/bootstrap/magic.js +0 -1
- package/icons/bootstrap/magnet-fill.js +0 -1
- package/icons/bootstrap/magnet.js +0 -1
- package/icons/bootstrap/mailbox-flag.js +0 -1
- package/icons/bootstrap/mailbox.js +0 -1
- package/icons/bootstrap/mailbox2-flag.js +0 -1
- package/icons/bootstrap/mailbox2.js +0 -1
- package/icons/bootstrap/map-fill.js +0 -1
- package/icons/bootstrap/map.js +0 -1
- package/icons/bootstrap/markdown-fill.js +0 -1
- package/icons/bootstrap/markdown.js +0 -1
- package/icons/bootstrap/marker-tip.js +0 -1
- package/icons/bootstrap/mask.js +0 -1
- package/icons/bootstrap/mastodon.js +0 -1
- package/icons/bootstrap/medium.js +0 -1
- package/icons/bootstrap/megaphone-fill.js +0 -1
- package/icons/bootstrap/megaphone.js +0 -1
- package/icons/bootstrap/memory.js +0 -1
- package/icons/bootstrap/menu-app-fill.js +0 -1
- package/icons/bootstrap/menu-app.js +0 -1
- package/icons/bootstrap/menu-button-fill.js +0 -1
- package/icons/bootstrap/menu-button-wide-fill.js +0 -1
- package/icons/bootstrap/menu-button-wide.js +0 -1
- package/icons/bootstrap/menu-button.js +0 -1
- package/icons/bootstrap/menu-down.js +0 -1
- package/icons/bootstrap/menu-up.js +0 -1
- package/icons/bootstrap/messenger.js +0 -1
- package/icons/bootstrap/meta.js +0 -1
- package/icons/bootstrap/mic-fill.js +0 -1
- package/icons/bootstrap/mic-mute-fill.js +0 -1
- package/icons/bootstrap/mic-mute.js +0 -1
- package/icons/bootstrap/mic.js +0 -1
- package/icons/bootstrap/microsoft-teams.js +0 -1
- package/icons/bootstrap/microsoft.js +0 -1
- package/icons/bootstrap/minecart-loaded.js +0 -1
- package/icons/bootstrap/minecart.js +0 -1
- package/icons/bootstrap/modem-fill.js +0 -1
- package/icons/bootstrap/modem.js +0 -1
- package/icons/bootstrap/moisture.js +0 -1
- package/icons/bootstrap/moon-fill.js +0 -1
- package/icons/bootstrap/moon-stars-fill.js +0 -1
- package/icons/bootstrap/moon-stars.js +0 -1
- package/icons/bootstrap/moon.js +0 -1
- package/icons/bootstrap/mortarboard-fill.js +0 -1
- package/icons/bootstrap/mortarboard.js +0 -1
- package/icons/bootstrap/motherboard-fill.js +0 -1
- package/icons/bootstrap/motherboard.js +0 -1
- package/icons/bootstrap/mouse-fill.js +0 -1
- package/icons/bootstrap/mouse.js +0 -1
- package/icons/bootstrap/mouse2-fill.js +0 -1
- package/icons/bootstrap/mouse2.js +0 -1
- package/icons/bootstrap/mouse3-fill.js +0 -1
- package/icons/bootstrap/mouse3.js +0 -1
- package/icons/bootstrap/music-note-beamed.js +0 -1
- package/icons/bootstrap/music-note-list.js +0 -1
- package/icons/bootstrap/music-note.js +0 -1
- package/icons/bootstrap/music-player-fill.js +0 -1
- package/icons/bootstrap/music-player.js +0 -1
- package/icons/bootstrap/newspaper.js +0 -1
- package/icons/bootstrap/nintendo-switch.js +0 -1
- package/icons/bootstrap/node-minus-fill.js +0 -1
- package/icons/bootstrap/node-minus.js +0 -1
- package/icons/bootstrap/node-plus-fill.js +0 -1
- package/icons/bootstrap/node-plus.js +0 -1
- package/icons/bootstrap/noise-reduction.js +0 -1
- package/icons/bootstrap/nut-fill.js +0 -1
- package/icons/bootstrap/nut.js +0 -1
- package/icons/bootstrap/nvidia.js +0 -1
- package/icons/bootstrap/nvme-fill.js +0 -1
- package/icons/bootstrap/nvme.js +0 -1
- package/icons/bootstrap/octagon-fill.js +0 -1
- package/icons/bootstrap/octagon-half.js +0 -1
- package/icons/bootstrap/octagon.js +0 -1
- package/icons/bootstrap/opencollective.js +0 -1
- package/icons/bootstrap/optical-audio-fill.js +0 -1
- package/icons/bootstrap/optical-audio.js +0 -1
- package/icons/bootstrap/option.js +0 -1
- package/icons/bootstrap/outlet.js +0 -1
- package/icons/bootstrap/p-circle-fill.js +0 -1
- package/icons/bootstrap/p-circle.js +0 -1
- package/icons/bootstrap/p-square-fill.js +0 -1
- package/icons/bootstrap/p-square.js +0 -1
- package/icons/bootstrap/paint-bucket.js +0 -1
- package/icons/bootstrap/palette-fill.js +0 -1
- package/icons/bootstrap/palette.js +0 -1
- package/icons/bootstrap/palette2.js +0 -1
- package/icons/bootstrap/paperclip.js +0 -1
- package/icons/bootstrap/paragraph.js +0 -1
- package/icons/bootstrap/pass-fill.js +0 -1
- package/icons/bootstrap/pass.js +0 -1
- package/icons/bootstrap/passport-fill.js +0 -1
- package/icons/bootstrap/passport.js +0 -1
- package/icons/bootstrap/patch-check-fill.js +0 -1
- package/icons/bootstrap/patch-check.js +0 -1
- package/icons/bootstrap/patch-exclamation-fill.js +0 -1
- package/icons/bootstrap/patch-exclamation.js +0 -1
- package/icons/bootstrap/patch-minus-fill.js +0 -1
- package/icons/bootstrap/patch-minus.js +0 -1
- package/icons/bootstrap/patch-plus-fill.js +0 -1
- package/icons/bootstrap/patch-plus.js +0 -1
- package/icons/bootstrap/patch-question-fill.js +0 -1
- package/icons/bootstrap/patch-question.js +0 -1
- package/icons/bootstrap/pause-btn-fill.js +0 -1
- package/icons/bootstrap/pause-btn.js +0 -1
- package/icons/bootstrap/pause-circle-fill.js +0 -1
- package/icons/bootstrap/pause-circle.js +0 -1
- package/icons/bootstrap/pause-fill.js +0 -1
- package/icons/bootstrap/pause.js +0 -1
- package/icons/bootstrap/paypal.js +0 -1
- package/icons/bootstrap/pc-display-horizontal.js +0 -1
- package/icons/bootstrap/pc-display.js +0 -1
- package/icons/bootstrap/pc-horizontal.js +0 -1
- package/icons/bootstrap/pc.js +0 -1
- package/icons/bootstrap/pci-card-network.js +0 -1
- package/icons/bootstrap/pci-card-sound.js +0 -1
- package/icons/bootstrap/pci-card.js +0 -1
- package/icons/bootstrap/peace-fill.js +0 -1
- package/icons/bootstrap/peace.js +0 -1
- package/icons/bootstrap/pen-fill.js +0 -1
- package/icons/bootstrap/pen.js +0 -1
- package/icons/bootstrap/pencil-fill.js +0 -1
- package/icons/bootstrap/pencil-square.js +0 -1
- package/icons/bootstrap/pencil.js +0 -1
- package/icons/bootstrap/pentagon-fill.js +0 -1
- package/icons/bootstrap/pentagon-half.js +0 -1
- package/icons/bootstrap/pentagon.js +0 -1
- package/icons/bootstrap/people-fill.js +0 -1
- package/icons/bootstrap/people.js +0 -1
- package/icons/bootstrap/percent.js +0 -1
- package/icons/bootstrap/person-add.js +0 -1
- package/icons/bootstrap/person-arms-up.js +0 -1
- package/icons/bootstrap/person-badge-fill.js +0 -1
- package/icons/bootstrap/person-badge.js +0 -1
- package/icons/bootstrap/person-bounding-box.js +0 -1
- package/icons/bootstrap/person-check-fill.js +0 -1
- package/icons/bootstrap/person-check.js +0 -1
- package/icons/bootstrap/person-circle.js +0 -1
- package/icons/bootstrap/person-dash-fill.js +0 -1
- package/icons/bootstrap/person-dash.js +0 -1
- package/icons/bootstrap/person-down.js +0 -1
- package/icons/bootstrap/person-exclamation.js +0 -1
- package/icons/bootstrap/person-fill-add.js +0 -1
- package/icons/bootstrap/person-fill-check.js +0 -1
- package/icons/bootstrap/person-fill-dash.js +0 -1
- package/icons/bootstrap/person-fill-down.js +0 -1
- package/icons/bootstrap/person-fill-exclamation.js +0 -1
- package/icons/bootstrap/person-fill-gear.js +0 -1
- package/icons/bootstrap/person-fill-lock.js +0 -1
- package/icons/bootstrap/person-fill-slash.js +0 -1
- package/icons/bootstrap/person-fill-up.js +0 -1
- package/icons/bootstrap/person-fill-x.js +0 -1
- package/icons/bootstrap/person-fill.js +0 -1
- package/icons/bootstrap/person-gear.js +0 -1
- package/icons/bootstrap/person-heart.js +0 -1
- package/icons/bootstrap/person-hearts.js +0 -1
- package/icons/bootstrap/person-lines-fill.js +0 -1
- package/icons/bootstrap/person-lock.js +0 -1
- package/icons/bootstrap/person-plus-fill.js +0 -1
- package/icons/bootstrap/person-plus.js +0 -1
- package/icons/bootstrap/person-raised-hand.js +0 -1
- package/icons/bootstrap/person-rolodex.js +0 -1
- package/icons/bootstrap/person-slash.js +0 -1
- package/icons/bootstrap/person-square.js +0 -1
- package/icons/bootstrap/person-standing-dress.js +0 -1
- package/icons/bootstrap/person-standing.js +0 -1
- package/icons/bootstrap/person-up.js +0 -1
- package/icons/bootstrap/person-vcard-fill.js +0 -1
- package/icons/bootstrap/person-vcard.js +0 -1
- package/icons/bootstrap/person-video.js +0 -1
- package/icons/bootstrap/person-video2.js +0 -1
- package/icons/bootstrap/person-video3.js +0 -1
- package/icons/bootstrap/person-walking.js +0 -1
- package/icons/bootstrap/person-wheelchair.js +0 -1
- package/icons/bootstrap/person-workspace.js +0 -1
- package/icons/bootstrap/person-x-fill.js +0 -1
- package/icons/bootstrap/person-x.js +0 -1
- package/icons/bootstrap/person.js +0 -1
- package/icons/bootstrap/phone-fill.js +0 -1
- package/icons/bootstrap/phone-flip.js +0 -1
- package/icons/bootstrap/phone-landscape-fill.js +0 -1
- package/icons/bootstrap/phone-landscape.js +0 -1
- package/icons/bootstrap/phone-vibrate-fill.js +0 -1
- package/icons/bootstrap/phone-vibrate.js +0 -1
- package/icons/bootstrap/phone.js +0 -1
- package/icons/bootstrap/pie-chart-fill.js +0 -1
- package/icons/bootstrap/pie-chart.js +0 -1
- package/icons/bootstrap/piggy-bank-fill.js +0 -1
- package/icons/bootstrap/piggy-bank.js +0 -1
- package/icons/bootstrap/pin-angle-fill.js +0 -1
- package/icons/bootstrap/pin-angle.js +0 -1
- package/icons/bootstrap/pin-fill.js +0 -1
- package/icons/bootstrap/pin-map-fill.js +0 -1
- package/icons/bootstrap/pin-map.js +0 -1
- package/icons/bootstrap/pin.js +0 -1
- package/icons/bootstrap/pinterest.js +0 -1
- package/icons/bootstrap/pip-fill.js +0 -1
- package/icons/bootstrap/pip.js +0 -1
- package/icons/bootstrap/play-btn-fill.js +0 -1
- package/icons/bootstrap/play-btn.js +0 -1
- package/icons/bootstrap/play-circle-fill.js +0 -1
- package/icons/bootstrap/play-circle.js +0 -1
- package/icons/bootstrap/play-fill.js +0 -1
- package/icons/bootstrap/play.js +0 -1
- package/icons/bootstrap/playstation.js +0 -1
- package/icons/bootstrap/plug-fill.js +0 -1
- package/icons/bootstrap/plug.js +0 -1
- package/icons/bootstrap/plugin.js +0 -1
- package/icons/bootstrap/plus-circle-dotted.js +0 -1
- package/icons/bootstrap/plus-circle-fill.js +0 -1
- package/icons/bootstrap/plus-circle.js +0 -1
- package/icons/bootstrap/plus-lg.js +0 -1
- package/icons/bootstrap/plus-slash-minus.js +0 -1
- package/icons/bootstrap/plus-square-dotted.js +0 -1
- package/icons/bootstrap/plus-square-fill.js +0 -1
- package/icons/bootstrap/plus-square.js +0 -1
- package/icons/bootstrap/plus.js +0 -1
- package/icons/bootstrap/postage-fill.js +0 -1
- package/icons/bootstrap/postage-heart-fill.js +0 -1
- package/icons/bootstrap/postage-heart.js +0 -1
- package/icons/bootstrap/postage.js +0 -1
- package/icons/bootstrap/postcard-fill.js +0 -1
- package/icons/bootstrap/postcard-heart-fill.js +0 -1
- package/icons/bootstrap/postcard-heart.js +0 -1
- package/icons/bootstrap/postcard.js +0 -1
- package/icons/bootstrap/power.js +0 -1
- package/icons/bootstrap/prescription.js +0 -1
- package/icons/bootstrap/prescription2.js +0 -1
- package/icons/bootstrap/printer-fill.js +0 -1
- package/icons/bootstrap/printer.js +0 -1
- package/icons/bootstrap/projector-fill.js +0 -1
- package/icons/bootstrap/projector.js +0 -1
- package/icons/bootstrap/puzzle-fill.js +0 -1
- package/icons/bootstrap/puzzle.js +0 -1
- package/icons/bootstrap/qr-code-scan.js +0 -1
- package/icons/bootstrap/qr-code.js +0 -1
- package/icons/bootstrap/question-circle-fill.js +0 -1
- package/icons/bootstrap/question-circle.js +0 -1
- package/icons/bootstrap/question-diamond-fill.js +0 -1
- package/icons/bootstrap/question-diamond.js +0 -1
- package/icons/bootstrap/question-lg.js +0 -1
- package/icons/bootstrap/question-octagon-fill.js +0 -1
- package/icons/bootstrap/question-octagon.js +0 -1
- package/icons/bootstrap/question-square-fill.js +0 -1
- package/icons/bootstrap/question-square.js +0 -1
- package/icons/bootstrap/question.js +0 -1
- package/icons/bootstrap/quora.js +0 -1
- package/icons/bootstrap/quote.js +0 -1
- package/icons/bootstrap/r-circle-fill.js +0 -1
- package/icons/bootstrap/r-circle.js +0 -1
- package/icons/bootstrap/r-square-fill.js +0 -1
- package/icons/bootstrap/r-square.js +0 -1
- package/icons/bootstrap/radar.js +0 -1
- package/icons/bootstrap/radioactive.js +0 -1
- package/icons/bootstrap/rainbow.js +0 -1
- package/icons/bootstrap/receipt-cutoff.js +0 -1
- package/icons/bootstrap/receipt.js +0 -1
- package/icons/bootstrap/reception-0.js +0 -1
- package/icons/bootstrap/reception-1.js +0 -1
- package/icons/bootstrap/reception-2.js +0 -1
- package/icons/bootstrap/reception-3.js +0 -1
- package/icons/bootstrap/reception-4.js +0 -1
- package/icons/bootstrap/record-btn-fill.js +0 -1
- package/icons/bootstrap/record-btn.js +0 -1
- package/icons/bootstrap/record-circle-fill.js +0 -1
- package/icons/bootstrap/record-circle.js +0 -1
- package/icons/bootstrap/record-fill.js +0 -1
- package/icons/bootstrap/record.js +0 -1
- package/icons/bootstrap/record2-fill.js +0 -1
- package/icons/bootstrap/record2.js +0 -1
- package/icons/bootstrap/recycle.js +0 -1
- package/icons/bootstrap/reddit.js +0 -1
- package/icons/bootstrap/regex.js +0 -1
- package/icons/bootstrap/repeat-1.js +0 -1
- package/icons/bootstrap/repeat.js +0 -1
- package/icons/bootstrap/reply-all-fill.js +0 -1
- package/icons/bootstrap/reply-all.js +0 -1
- package/icons/bootstrap/reply-fill.js +0 -1
- package/icons/bootstrap/reply.js +0 -1
- package/icons/bootstrap/rewind-btn-fill.js +0 -1
- package/icons/bootstrap/rewind-btn.js +0 -1
- package/icons/bootstrap/rewind-circle-fill.js +0 -1
- package/icons/bootstrap/rewind-circle.js +0 -1
- package/icons/bootstrap/rewind-fill.js +0 -1
- package/icons/bootstrap/rewind.js +0 -1
- package/icons/bootstrap/robot.js +0 -1
- package/icons/bootstrap/rocket-fill.js +0 -1
- package/icons/bootstrap/rocket-takeoff-fill.js +0 -1
- package/icons/bootstrap/rocket-takeoff.js +0 -1
- package/icons/bootstrap/rocket.js +0 -1
- package/icons/bootstrap/router-fill.js +0 -1
- package/icons/bootstrap/router.js +0 -1
- package/icons/bootstrap/rss-fill.js +0 -1
- package/icons/bootstrap/rss.js +0 -1
- package/icons/bootstrap/rulers.js +0 -1
- package/icons/bootstrap/safe-fill.js +0 -1
- package/icons/bootstrap/safe.js +0 -1
- package/icons/bootstrap/safe2-fill.js +0 -1
- package/icons/bootstrap/safe2.js +0 -1
- package/icons/bootstrap/save-fill.js +0 -1
- package/icons/bootstrap/save.js +0 -1
- package/icons/bootstrap/save2-fill.js +0 -1
- package/icons/bootstrap/save2.js +0 -1
- package/icons/bootstrap/scissors.js +0 -1
- package/icons/bootstrap/scooter.js +0 -1
- package/icons/bootstrap/screwdriver.js +0 -1
- package/icons/bootstrap/sd-card-fill.js +0 -1
- package/icons/bootstrap/sd-card.js +0 -1
- package/icons/bootstrap/search-heart-fill.js +0 -1
- package/icons/bootstrap/search-heart.js +0 -1
- package/icons/bootstrap/search.js +0 -1
- package/icons/bootstrap/segmented-nav.js +0 -1
- package/icons/bootstrap/send-arrow-down-fill.js +0 -1
- package/icons/bootstrap/send-arrow-down.js +0 -1
- package/icons/bootstrap/send-arrow-up-fill.js +0 -1
- package/icons/bootstrap/send-arrow-up.js +0 -1
- package/icons/bootstrap/send-check-fill.js +0 -1
- package/icons/bootstrap/send-check.js +0 -1
- package/icons/bootstrap/send-dash-fill.js +0 -1
- package/icons/bootstrap/send-dash.js +0 -1
- package/icons/bootstrap/send-exclamation-fill.js +0 -1
- package/icons/bootstrap/send-exclamation.js +0 -1
- package/icons/bootstrap/send-fill.js +0 -1
- package/icons/bootstrap/send-plus-fill.js +0 -1
- package/icons/bootstrap/send-plus.js +0 -1
- package/icons/bootstrap/send-slash-fill.js +0 -1
- package/icons/bootstrap/send-slash.js +0 -1
- package/icons/bootstrap/send-x-fill.js +0 -1
- package/icons/bootstrap/send-x.js +0 -1
- package/icons/bootstrap/send.js +0 -1
- package/icons/bootstrap/server.js +0 -1
- package/icons/bootstrap/shadows.js +0 -1
- package/icons/bootstrap/share-fill.js +0 -1
- package/icons/bootstrap/share.js +0 -1
- package/icons/bootstrap/shield-check.js +0 -1
- package/icons/bootstrap/shield-exclamation.js +0 -1
- package/icons/bootstrap/shield-fill-check.js +0 -1
- package/icons/bootstrap/shield-fill-exclamation.js +0 -1
- package/icons/bootstrap/shield-fill-minus.js +0 -1
- package/icons/bootstrap/shield-fill-plus.js +0 -1
- package/icons/bootstrap/shield-fill-x.js +0 -1
- package/icons/bootstrap/shield-fill.js +0 -1
- package/icons/bootstrap/shield-lock-fill.js +0 -1
- package/icons/bootstrap/shield-lock.js +0 -1
- package/icons/bootstrap/shield-minus.js +0 -1
- package/icons/bootstrap/shield-plus.js +0 -1
- package/icons/bootstrap/shield-shaded.js +0 -1
- package/icons/bootstrap/shield-slash-fill.js +0 -1
- package/icons/bootstrap/shield-slash.js +0 -1
- package/icons/bootstrap/shield-x.js +0 -1
- package/icons/bootstrap/shield.js +0 -1
- package/icons/bootstrap/shift-fill.js +0 -1
- package/icons/bootstrap/shift.js +0 -1
- package/icons/bootstrap/shop-window.js +0 -1
- package/icons/bootstrap/shop.js +0 -1
- package/icons/bootstrap/shuffle.js +0 -1
- package/icons/bootstrap/sign-dead-end-fill.js +0 -1
- package/icons/bootstrap/sign-dead-end.js +0 -1
- package/icons/bootstrap/sign-do-not-enter-fill.js +0 -1
- package/icons/bootstrap/sign-do-not-enter.js +0 -1
- package/icons/bootstrap/sign-intersection-fill.js +0 -1
- package/icons/bootstrap/sign-intersection-side-fill.js +0 -1
- package/icons/bootstrap/sign-intersection-side.js +0 -1
- package/icons/bootstrap/sign-intersection-t-fill.js +0 -1
- package/icons/bootstrap/sign-intersection-t.js +0 -1
- package/icons/bootstrap/sign-intersection-y-fill.js +0 -1
- package/icons/bootstrap/sign-intersection-y.js +0 -1
- package/icons/bootstrap/sign-intersection.js +0 -1
- package/icons/bootstrap/sign-merge-left-fill.js +0 -1
- package/icons/bootstrap/sign-merge-left.js +0 -1
- package/icons/bootstrap/sign-merge-right-fill.js +0 -1
- package/icons/bootstrap/sign-merge-right.js +0 -1
- package/icons/bootstrap/sign-no-left-turn-fill.js +0 -1
- package/icons/bootstrap/sign-no-left-turn.js +0 -1
- package/icons/bootstrap/sign-no-parking-fill.js +0 -1
- package/icons/bootstrap/sign-no-parking.js +0 -1
- package/icons/bootstrap/sign-no-right-turn-fill.js +0 -1
- package/icons/bootstrap/sign-no-right-turn.js +0 -1
- package/icons/bootstrap/sign-railroad-fill.js +0 -1
- package/icons/bootstrap/sign-railroad.js +0 -1
- package/icons/bootstrap/sign-stop-fill.js +0 -1
- package/icons/bootstrap/sign-stop-lights-fill.js +0 -1
- package/icons/bootstrap/sign-stop-lights.js +0 -1
- package/icons/bootstrap/sign-stop.js +0 -1
- package/icons/bootstrap/sign-turn-left-fill.js +0 -1
- package/icons/bootstrap/sign-turn-left.js +0 -1
- package/icons/bootstrap/sign-turn-right-fill.js +0 -1
- package/icons/bootstrap/sign-turn-right.js +0 -1
- package/icons/bootstrap/sign-turn-slight-left-fill.js +0 -1
- package/icons/bootstrap/sign-turn-slight-left.js +0 -1
- package/icons/bootstrap/sign-turn-slight-right-fill.js +0 -1
- package/icons/bootstrap/sign-turn-slight-right.js +0 -1
- package/icons/bootstrap/sign-yield-fill.js +0 -1
- package/icons/bootstrap/sign-yield.js +0 -1
- package/icons/bootstrap/signal.js +0 -1
- package/icons/bootstrap/signpost-2-fill.js +0 -1
- package/icons/bootstrap/signpost-2.js +0 -1
- package/icons/bootstrap/signpost-fill.js +0 -1
- package/icons/bootstrap/signpost-split-fill.js +0 -1
- package/icons/bootstrap/signpost-split.js +0 -1
- package/icons/bootstrap/signpost.js +0 -1
- package/icons/bootstrap/sim-fill.js +0 -1
- package/icons/bootstrap/sim-slash-fill.js +0 -1
- package/icons/bootstrap/sim-slash.js +0 -1
- package/icons/bootstrap/sim.js +0 -1
- package/icons/bootstrap/sina-weibo.js +0 -1
- package/icons/bootstrap/skip-backward-btn-fill.js +0 -1
- package/icons/bootstrap/skip-backward-btn.js +0 -1
- package/icons/bootstrap/skip-backward-circle-fill.js +0 -1
- package/icons/bootstrap/skip-backward-circle.js +0 -1
- package/icons/bootstrap/skip-backward-fill.js +0 -1
- package/icons/bootstrap/skip-backward.js +0 -1
- package/icons/bootstrap/skip-end-btn-fill.js +0 -1
- package/icons/bootstrap/skip-end-btn.js +0 -1
- package/icons/bootstrap/skip-end-circle-fill.js +0 -1
- package/icons/bootstrap/skip-end-circle.js +0 -1
- package/icons/bootstrap/skip-end-fill.js +0 -1
- package/icons/bootstrap/skip-end.js +0 -1
- package/icons/bootstrap/skip-forward-btn-fill.js +0 -1
- package/icons/bootstrap/skip-forward-btn.js +0 -1
- package/icons/bootstrap/skip-forward-circle-fill.js +0 -1
- package/icons/bootstrap/skip-forward-circle.js +0 -1
- package/icons/bootstrap/skip-forward-fill.js +0 -1
- package/icons/bootstrap/skip-forward.js +0 -1
- package/icons/bootstrap/skip-start-btn-fill.js +0 -1
- package/icons/bootstrap/skip-start-btn.js +0 -1
- package/icons/bootstrap/skip-start-circle-fill.js +0 -1
- package/icons/bootstrap/skip-start-circle.js +0 -1
- package/icons/bootstrap/skip-start-fill.js +0 -1
- package/icons/bootstrap/skip-start.js +0 -1
- package/icons/bootstrap/skype.js +0 -1
- package/icons/bootstrap/slack.js +0 -1
- package/icons/bootstrap/slash-circle-fill.js +0 -1
- package/icons/bootstrap/slash-circle.js +0 -1
- package/icons/bootstrap/slash-lg.js +0 -1
- package/icons/bootstrap/slash-square-fill.js +0 -1
- package/icons/bootstrap/slash-square.js +0 -1
- package/icons/bootstrap/slash.js +0 -1
- package/icons/bootstrap/sliders.js +0 -1
- package/icons/bootstrap/sliders2-vertical.js +0 -1
- package/icons/bootstrap/sliders2.js +0 -1
- package/icons/bootstrap/smartwatch.js +0 -1
- package/icons/bootstrap/snapchat.js +0 -1
- package/icons/bootstrap/snow.js +0 -1
- package/icons/bootstrap/snow2.js +0 -1
- package/icons/bootstrap/snow3.js +0 -1
- package/icons/bootstrap/sort-alpha-down-alt.js +0 -1
- package/icons/bootstrap/sort-alpha-down.js +0 -1
- package/icons/bootstrap/sort-alpha-up-alt.js +0 -1
- package/icons/bootstrap/sort-alpha-up.js +0 -1
- package/icons/bootstrap/sort-down-alt.js +0 -1
- package/icons/bootstrap/sort-down.js +0 -1
- package/icons/bootstrap/sort-numeric-down-alt.js +0 -1
- package/icons/bootstrap/sort-numeric-down.js +0 -1
- package/icons/bootstrap/sort-numeric-up-alt.js +0 -1
- package/icons/bootstrap/sort-numeric-up.js +0 -1
- package/icons/bootstrap/sort-up-alt.js +0 -1
- package/icons/bootstrap/sort-up.js +0 -1
- package/icons/bootstrap/soundwave.js +0 -1
- package/icons/bootstrap/sourceforge.js +0 -1
- package/icons/bootstrap/speaker-fill.js +0 -1
- package/icons/bootstrap/speaker.js +0 -1
- package/icons/bootstrap/speedometer.js +0 -1
- package/icons/bootstrap/speedometer2.js +0 -1
- package/icons/bootstrap/spellcheck.js +0 -1
- package/icons/bootstrap/spotify.js +0 -1
- package/icons/bootstrap/square-fill.js +0 -1
- package/icons/bootstrap/square-half.js +0 -1
- package/icons/bootstrap/square.js +0 -1
- package/icons/bootstrap/stack-overflow.js +0 -1
- package/icons/bootstrap/stack.js +0 -1
- package/icons/bootstrap/star-fill.js +0 -1
- package/icons/bootstrap/star-half.js +0 -1
- package/icons/bootstrap/star.js +0 -1
- package/icons/bootstrap/stars.js +0 -1
- package/icons/bootstrap/steam.js +0 -1
- package/icons/bootstrap/stickies-fill.js +0 -1
- package/icons/bootstrap/stickies.js +0 -1
- package/icons/bootstrap/sticky-fill.js +0 -1
- package/icons/bootstrap/sticky.js +0 -1
- package/icons/bootstrap/stop-btn-fill.js +0 -1
- package/icons/bootstrap/stop-btn.js +0 -1
- package/icons/bootstrap/stop-circle-fill.js +0 -1
- package/icons/bootstrap/stop-circle.js +0 -1
- package/icons/bootstrap/stop-fill.js +0 -1
- package/icons/bootstrap/stop.js +0 -1
- package/icons/bootstrap/stoplights-fill.js +0 -1
- package/icons/bootstrap/stoplights.js +0 -1
- package/icons/bootstrap/stopwatch-fill.js +0 -1
- package/icons/bootstrap/stopwatch.js +0 -1
- package/icons/bootstrap/strava.js +0 -1
- package/icons/bootstrap/stripe.js +0 -1
- package/icons/bootstrap/subscript.js +0 -1
- package/icons/bootstrap/substack.js +0 -1
- package/icons/bootstrap/subtract.js +0 -1
- package/icons/bootstrap/suit-club-fill.js +0 -1
- package/icons/bootstrap/suit-club.js +0 -1
- package/icons/bootstrap/suit-diamond-fill.js +0 -1
- package/icons/bootstrap/suit-diamond.js +0 -1
- package/icons/bootstrap/suit-heart-fill.js +0 -1
- package/icons/bootstrap/suit-heart.js +0 -1
- package/icons/bootstrap/suit-spade-fill.js +0 -1
- package/icons/bootstrap/suit-spade.js +0 -1
- package/icons/bootstrap/suitcase-fill.js +0 -1
- package/icons/bootstrap/suitcase-lg-fill.js +0 -1
- package/icons/bootstrap/suitcase-lg.js +0 -1
- package/icons/bootstrap/suitcase.js +0 -1
- package/icons/bootstrap/suitcase2-fill.js +0 -1
- package/icons/bootstrap/suitcase2.js +0 -1
- package/icons/bootstrap/sun-fill.js +0 -1
- package/icons/bootstrap/sun.js +0 -1
- package/icons/bootstrap/sunglasses.js +0 -1
- package/icons/bootstrap/sunrise-fill.js +0 -1
- package/icons/bootstrap/sunrise.js +0 -1
- package/icons/bootstrap/sunset-fill.js +0 -1
- package/icons/bootstrap/sunset.js +0 -1
- package/icons/bootstrap/superscript.js +0 -1
- package/icons/bootstrap/symmetry-horizontal.js +0 -1
- package/icons/bootstrap/symmetry-vertical.js +0 -1
- package/icons/bootstrap/table.js +0 -1
- package/icons/bootstrap/tablet-fill.js +0 -1
- package/icons/bootstrap/tablet-landscape-fill.js +0 -1
- package/icons/bootstrap/tablet-landscape.js +0 -1
- package/icons/bootstrap/tablet.js +0 -1
- package/icons/bootstrap/tag-fill.js +0 -1
- package/icons/bootstrap/tag.js +0 -1
- package/icons/bootstrap/tags-fill.js +0 -1
- package/icons/bootstrap/tags.js +0 -1
- package/icons/bootstrap/taxi-front-fill.js +0 -1
- package/icons/bootstrap/taxi-front.js +0 -1
- package/icons/bootstrap/telegram.js +0 -1
- package/icons/bootstrap/telephone-fill.js +0 -1
- package/icons/bootstrap/telephone-forward-fill.js +0 -1
- package/icons/bootstrap/telephone-forward.js +0 -1
- package/icons/bootstrap/telephone-inbound-fill.js +0 -1
- package/icons/bootstrap/telephone-inbound.js +0 -1
- package/icons/bootstrap/telephone-minus-fill.js +0 -1
- package/icons/bootstrap/telephone-minus.js +0 -1
- package/icons/bootstrap/telephone-outbound-fill.js +0 -1
- package/icons/bootstrap/telephone-outbound.js +0 -1
- package/icons/bootstrap/telephone-plus-fill.js +0 -1
- package/icons/bootstrap/telephone-plus.js +0 -1
- package/icons/bootstrap/telephone-x-fill.js +0 -1
- package/icons/bootstrap/telephone-x.js +0 -1
- package/icons/bootstrap/telephone.js +0 -1
- package/icons/bootstrap/tencent-qq.js +0 -1
- package/icons/bootstrap/terminal-dash.js +0 -1
- package/icons/bootstrap/terminal-fill.js +0 -1
- package/icons/bootstrap/terminal-plus.js +0 -1
- package/icons/bootstrap/terminal-split.js +0 -1
- package/icons/bootstrap/terminal-x.js +0 -1
- package/icons/bootstrap/terminal.js +0 -1
- package/icons/bootstrap/text-center.js +0 -1
- package/icons/bootstrap/text-indent-left.js +0 -1
- package/icons/bootstrap/text-indent-right.js +0 -1
- package/icons/bootstrap/text-left.js +0 -1
- package/icons/bootstrap/text-paragraph.js +0 -1
- package/icons/bootstrap/text-right.js +0 -1
- package/icons/bootstrap/text-wrap.js +0 -1
- package/icons/bootstrap/textarea-resize.js +0 -1
- package/icons/bootstrap/textarea-t.js +0 -1
- package/icons/bootstrap/textarea.js +0 -1
- package/icons/bootstrap/thermometer-half.js +0 -1
- package/icons/bootstrap/thermometer-high.js +0 -1
- package/icons/bootstrap/thermometer-low.js +0 -1
- package/icons/bootstrap/thermometer-snow.js +0 -1
- package/icons/bootstrap/thermometer-sun.js +0 -1
- package/icons/bootstrap/thermometer.js +0 -1
- package/icons/bootstrap/threads-fill.js +0 -1
- package/icons/bootstrap/threads.js +0 -1
- package/icons/bootstrap/three-dots-vertical.js +0 -1
- package/icons/bootstrap/three-dots.js +0 -1
- package/icons/bootstrap/thunderbolt-fill.js +0 -1
- package/icons/bootstrap/thunderbolt.js +0 -1
- package/icons/bootstrap/ticket-detailed-fill.js +0 -1
- package/icons/bootstrap/ticket-detailed.js +0 -1
- package/icons/bootstrap/ticket-fill.js +0 -1
- package/icons/bootstrap/ticket-perforated-fill.js +0 -1
- package/icons/bootstrap/ticket-perforated.js +0 -1
- package/icons/bootstrap/ticket.js +0 -1
- package/icons/bootstrap/tiktok.js +0 -1
- package/icons/bootstrap/toggle-off.js +0 -1
- package/icons/bootstrap/toggle-on.js +0 -1
- package/icons/bootstrap/toggle2-off.js +0 -1
- package/icons/bootstrap/toggle2-on.js +0 -1
- package/icons/bootstrap/toggles.js +0 -1
- package/icons/bootstrap/toggles2.js +0 -1
- package/icons/bootstrap/tools.js +0 -1
- package/icons/bootstrap/tornado.js +0 -1
- package/icons/bootstrap/train-freight-front-fill.js +0 -1
- package/icons/bootstrap/train-freight-front.js +0 -1
- package/icons/bootstrap/train-front-fill.js +0 -1
- package/icons/bootstrap/train-front.js +0 -1
- package/icons/bootstrap/train-lightrail-front-fill.js +0 -1
- package/icons/bootstrap/train-lightrail-front.js +0 -1
- package/icons/bootstrap/translate.js +0 -1
- package/icons/bootstrap/transparency.js +0 -1
- package/icons/bootstrap/trash-fill.js +0 -1
- package/icons/bootstrap/trash.js +0 -1
- package/icons/bootstrap/trash2-fill.js +0 -1
- package/icons/bootstrap/trash2.js +0 -1
- package/icons/bootstrap/trash3-fill.js +0 -1
- package/icons/bootstrap/trash3.js +0 -1
- package/icons/bootstrap/tree-fill.js +0 -1
- package/icons/bootstrap/tree.js +0 -1
- package/icons/bootstrap/trello.js +0 -1
- package/icons/bootstrap/triangle-fill.js +0 -1
- package/icons/bootstrap/triangle-half.js +0 -1
- package/icons/bootstrap/triangle.js +0 -1
- package/icons/bootstrap/trophy-fill.js +0 -1
- package/icons/bootstrap/trophy.js +0 -1
- package/icons/bootstrap/tropical-storm.js +0 -1
- package/icons/bootstrap/truck-flatbed.js +0 -1
- package/icons/bootstrap/truck-front-fill.js +0 -1
- package/icons/bootstrap/truck-front.js +0 -1
- package/icons/bootstrap/truck.js +0 -1
- package/icons/bootstrap/tsunami.js +0 -1
- package/icons/bootstrap/tv-fill.js +0 -1
- package/icons/bootstrap/tv.js +0 -1
- package/icons/bootstrap/twitch.js +0 -1
- package/icons/bootstrap/twitter-x.js +0 -1
- package/icons/bootstrap/twitter.js +0 -1
- package/icons/bootstrap/type-bold.js +0 -1
- package/icons/bootstrap/type-h1.js +0 -1
- package/icons/bootstrap/type-h2.js +0 -1
- package/icons/bootstrap/type-h3.js +0 -1
- package/icons/bootstrap/type-h4.js +0 -1
- package/icons/bootstrap/type-h5.js +0 -1
- package/icons/bootstrap/type-h6.js +0 -1
- package/icons/bootstrap/type-italic.js +0 -1
- package/icons/bootstrap/type-strikethrough.js +0 -1
- package/icons/bootstrap/type-underline.js +0 -1
- package/icons/bootstrap/type.js +0 -1
- package/icons/bootstrap/ubuntu.js +0 -1
- package/icons/bootstrap/ui-checks-grid.js +0 -1
- package/icons/bootstrap/ui-checks.js +0 -1
- package/icons/bootstrap/ui-radios-grid.js +0 -1
- package/icons/bootstrap/ui-radios.js +0 -1
- package/icons/bootstrap/umbrella-fill.js +0 -1
- package/icons/bootstrap/umbrella.js +0 -1
- package/icons/bootstrap/unindent.js +0 -1
- package/icons/bootstrap/union.js +0 -1
- package/icons/bootstrap/unity.js +0 -1
- package/icons/bootstrap/universal-access-circle.js +0 -1
- package/icons/bootstrap/universal-access.js +0 -1
- package/icons/bootstrap/unlock-fill.js +0 -1
- package/icons/bootstrap/unlock.js +0 -1
- package/icons/bootstrap/upc-scan.js +0 -1
- package/icons/bootstrap/upc.js +0 -1
- package/icons/bootstrap/upload.js +0 -1
- package/icons/bootstrap/usb-c-fill.js +0 -1
- package/icons/bootstrap/usb-c.js +0 -1
- package/icons/bootstrap/usb-drive-fill.js +0 -1
- package/icons/bootstrap/usb-drive.js +0 -1
- package/icons/bootstrap/usb-fill.js +0 -1
- package/icons/bootstrap/usb-micro-fill.js +0 -1
- package/icons/bootstrap/usb-micro.js +0 -1
- package/icons/bootstrap/usb-mini-fill.js +0 -1
- package/icons/bootstrap/usb-mini.js +0 -1
- package/icons/bootstrap/usb-plug-fill.js +0 -1
- package/icons/bootstrap/usb-plug.js +0 -1
- package/icons/bootstrap/usb-symbol.js +0 -1
- package/icons/bootstrap/usb.js +0 -1
- package/icons/bootstrap/valentine.js +0 -1
- package/icons/bootstrap/valentine2.js +0 -1
- package/icons/bootstrap/vector-pen.js +0 -1
- package/icons/bootstrap/view-list.js +0 -1
- package/icons/bootstrap/view-stacked.js +0 -1
- package/icons/bootstrap/vignette.js +0 -1
- package/icons/bootstrap/vimeo.js +0 -1
- package/icons/bootstrap/vinyl-fill.js +0 -1
- package/icons/bootstrap/vinyl.js +0 -1
- package/icons/bootstrap/virus.js +0 -1
- package/icons/bootstrap/virus2.js +0 -1
- package/icons/bootstrap/voicemail.js +0 -1
- package/icons/bootstrap/volume-down-fill.js +0 -1
- package/icons/bootstrap/volume-down.js +0 -1
- package/icons/bootstrap/volume-mute-fill.js +0 -1
- package/icons/bootstrap/volume-mute.js +0 -1
- package/icons/bootstrap/volume-off-fill.js +0 -1
- package/icons/bootstrap/volume-off.js +0 -1
- package/icons/bootstrap/volume-up-fill.js +0 -1
- package/icons/bootstrap/volume-up.js +0 -1
- package/icons/bootstrap/vr.js +0 -1
- package/icons/bootstrap/wallet-fill.js +0 -1
- package/icons/bootstrap/wallet.js +0 -1
- package/icons/bootstrap/wallet2.js +0 -1
- package/icons/bootstrap/watch.js +0 -1
- package/icons/bootstrap/water.js +0 -1
- package/icons/bootstrap/webcam-fill.js +0 -1
- package/icons/bootstrap/webcam.js +0 -1
- package/icons/bootstrap/wechat.js +0 -1
- package/icons/bootstrap/whatsapp.js +0 -1
- package/icons/bootstrap/wifi-1.js +0 -1
- package/icons/bootstrap/wifi-2.js +0 -1
- package/icons/bootstrap/wifi-off.js +0 -1
- package/icons/bootstrap/wifi.js +0 -1
- package/icons/bootstrap/wikipedia.js +0 -1
- package/icons/bootstrap/wind.js +0 -1
- package/icons/bootstrap/window-dash.js +0 -1
- package/icons/bootstrap/window-desktop.js +0 -1
- package/icons/bootstrap/window-dock.js +0 -1
- package/icons/bootstrap/window-fullscreen.js +0 -1
- package/icons/bootstrap/window-plus.js +0 -1
- package/icons/bootstrap/window-sidebar.js +0 -1
- package/icons/bootstrap/window-split.js +0 -1
- package/icons/bootstrap/window-stack.js +0 -1
- package/icons/bootstrap/window-x.js +0 -1
- package/icons/bootstrap/window.js +0 -1
- package/icons/bootstrap/windows.js +0 -1
- package/icons/bootstrap/wordpress.js +0 -1
- package/icons/bootstrap/wrench-adjustable-circle-fill.js +0 -1
- package/icons/bootstrap/wrench-adjustable-circle.js +0 -1
- package/icons/bootstrap/wrench-adjustable.js +0 -1
- package/icons/bootstrap/wrench.js +0 -1
- package/icons/bootstrap/x-circle-fill.js +0 -1
- package/icons/bootstrap/x-circle.js +0 -1
- package/icons/bootstrap/x-diamond-fill.js +0 -1
- package/icons/bootstrap/x-diamond.js +0 -1
- package/icons/bootstrap/x-lg.js +0 -1
- package/icons/bootstrap/x-octagon-fill.js +0 -1
- package/icons/bootstrap/x-octagon.js +0 -1
- package/icons/bootstrap/x-square-fill.js +0 -1
- package/icons/bootstrap/x-square.js +0 -1
- package/icons/bootstrap/x.js +0 -1
- package/icons/bootstrap/xbox.js +0 -1
- package/icons/bootstrap/yelp.js +0 -1
- package/icons/bootstrap/yin-yang.js +0 -1
- package/icons/bootstrap/youtube.js +0 -1
- package/icons/bootstrap/zoom-in.js +0 -1
- package/icons/bootstrap/zoom-out.js +0 -1
- package/icons/gcp/access-context-manager.js +0 -1
- package/icons/gcp/administration.js +0 -1
- package/icons/gcp/advanced-agent-modeling.js +0 -1
- package/icons/gcp/advanced-solutions-lab.js +0 -1
- package/icons/gcp/agent-assist.js +0 -1
- package/icons/gcp/ai-hub.js +0 -1
- package/icons/gcp/ai-platform-unified.js +0 -1
- package/icons/gcp/ai-platform.js +0 -1
- package/icons/gcp/analytics-hub.js +0 -1
- package/icons/gcp/anthos-config-management.js +0 -1
- package/icons/gcp/anthos-service-mesh.js +0 -1
- package/icons/gcp/anthos.js +0 -1
- package/icons/gcp/api-analytics.js +0 -1
- package/icons/gcp/api-monetization.js +0 -1
- package/icons/gcp/api.js +0 -1
- package/icons/gcp/apigee-api-platform.js +0 -1
- package/icons/gcp/apigee-sense.js +0 -1
- package/icons/gcp/app-engine.js +0 -1
- package/icons/gcp/artifact-registry.js +0 -1
- package/icons/gcp/asset-inventory.js +0 -1
- package/icons/gcp/assured-workloads.js +0 -1
- package/icons/gcp/auto-ml-natural-language.js +0 -1
- package/icons/gcp/auto-ml-tables.js +0 -1
- package/icons/gcp/auto-ml-translation.js +0 -1
- package/icons/gcp/auto-ml-video-intelligence.js +0 -1
- package/icons/gcp/auto-ml-vision.js +0 -1
- package/icons/gcp/auto-ml.js +0 -1
- package/icons/gcp/bare-metal-solutions.js +0 -1
- package/icons/gcp/batch.js +0 -1
- package/icons/gcp/beyondcorp.js +0 -1
- package/icons/gcp/big-query.js +0 -1
- package/icons/gcp/bigtable.js +0 -1
- package/icons/gcp/billing.js +0 -1
- package/icons/gcp/binary-authorization.js +0 -1
- package/icons/gcp/catalog.js +0 -1
- package/icons/gcp/certificate-authority-service.js +0 -1
- package/icons/gcp/certificate-manager.js +0 -1
- package/icons/gcp/cloud-api-gateway.js +0 -1
- package/icons/gcp/cloud-apis.js +0 -1
- package/icons/gcp/cloud-armor.js +0 -1
- package/icons/gcp/cloud-asset-inventory.js +0 -1
- package/icons/gcp/cloud-audit-logs.js +0 -1
- package/icons/gcp/cloud-build.js +0 -1
- package/icons/gcp/cloud-cdn.js +0 -1
- package/icons/gcp/cloud-code.js +0 -1
- package/icons/gcp/cloud-composer.js +0 -1
- package/icons/gcp/cloud-data-fusion.js +0 -1
- package/icons/gcp/cloud-deploy.js +0 -1
- package/icons/gcp/cloud-deployment-manager.js +0 -1
- package/icons/gcp/cloud-dns.js +0 -1
- package/icons/gcp/cloud-domains.js +0 -1
- package/icons/gcp/cloud-ekm.js +0 -1
- package/icons/gcp/cloud-endpoints.js +0 -1
- package/icons/gcp/cloud-external-ip-addresses.js +0 -1
- package/icons/gcp/cloud-firewall-rules.js +0 -1
- package/icons/gcp/cloud-for-marketing.js +0 -1
- package/icons/gcp/cloud-functions.js +0 -1
- package/icons/gcp/cloud-generic.js +0 -1
- package/icons/gcp/cloud-gpu.js +0 -1
- package/icons/gcp/cloud-healthcare-api.js +0 -1
- package/icons/gcp/cloud-healthcare-marketplace.js +0 -1
- package/icons/gcp/cloud-hsm.js +0 -1
- package/icons/gcp/cloud-ids.js +0 -1
- package/icons/gcp/cloud-inference-api.js +0 -1
- package/icons/gcp/cloud-interconnect.js +0 -1
- package/icons/gcp/cloud-jobs-api.js +0 -1
- package/icons/gcp/cloud-load-balancing.js +0 -1
- package/icons/gcp/cloud-logging.js +0 -1
- package/icons/gcp/cloud-media-edge.js +0 -1
- package/icons/gcp/cloud-monitoring.js +0 -1
- package/icons/gcp/cloud-nat.js +0 -1
- package/icons/gcp/cloud-natural-language-api.js +0 -1
- package/icons/gcp/cloud-network.js +0 -1
- package/icons/gcp/cloud-ops.js +0 -1
- package/icons/gcp/cloud-optimization-ai-fleet-routing-api.js +0 -1
- package/icons/gcp/cloud-optimization-ai.js +0 -1
- package/icons/gcp/cloud-router.js +0 -1
- package/icons/gcp/cloud-routes.js +0 -1
- package/icons/gcp/cloud-run-for-anthos.js +0 -1
- package/icons/gcp/cloud-run.js +0 -1
- package/icons/gcp/cloud-scheduler.js +0 -1
- package/icons/gcp/cloud-security-scanner.js +0 -1
- package/icons/gcp/cloud-shell.js +0 -1
- package/icons/gcp/cloud-spanner.js +0 -1
- package/icons/gcp/cloud-sql.js +0 -1
- package/icons/gcp/cloud-storage.js +0 -1
- package/icons/gcp/cloud-tasks.js +0 -1
- package/icons/gcp/cloud-test-lab.js +0 -1
- package/icons/gcp/cloud-tpu.js +0 -1
- package/icons/gcp/cloud-translation-api.js +0 -1
- package/icons/gcp/cloud-vision-api.js +0 -1
- package/icons/gcp/cloud-vpn.js +0 -1
- package/icons/gcp/compute-engine.js +0 -1
- package/icons/gcp/configuration-management.js +0 -1
- package/icons/gcp/connectivity-test.js +0 -1
- package/icons/gcp/connectors.js +0 -1
- package/icons/gcp/contact-center-ai.js +0 -1
- package/icons/gcp/container-optimized-os.js +0 -1
- package/icons/gcp/container-registry.js +0 -1
- package/icons/gcp/data-catalog.js +0 -1
- package/icons/gcp/data-labeling.js +0 -1
- package/icons/gcp/data-layers.js +0 -1
- package/icons/gcp/data-loss-prevention-api.js +0 -1
- package/icons/gcp/data-qn-a.js +0 -1
- package/icons/gcp/data-studio.js +0 -1
- package/icons/gcp/data-transfer.js +0 -1
- package/icons/gcp/database-migration-service.js +0 -1
- package/icons/gcp/dataflow.js +0 -1
- package/icons/gcp/datalab.js +0 -1
- package/icons/gcp/dataplex.js +0 -1
- package/icons/gcp/datapol.js +0 -1
- package/icons/gcp/dataprep.js +0 -1
- package/icons/gcp/dataproc-metastore.js +0 -1
- package/icons/gcp/dataproc.js +0 -1
- package/icons/gcp/datashare.js +0 -1
- package/icons/gcp/datastore.js +0 -1
- package/icons/gcp/datastream.js +0 -1
- package/icons/gcp/debugger.js +0 -1
- package/icons/gcp/developer-portal.js +0 -1
- package/icons/gcp/dialogflow-cx.js +0 -1
- package/icons/gcp/dialogflow-insights.js +0 -1
- package/icons/gcp/dialogflow.js +0 -1
- package/icons/gcp/document-ai.js +0 -1
- package/icons/gcp/early-access-center.js +0 -1
- package/icons/gcp/error-reporting.js +0 -1
- package/icons/gcp/eventarc.js +0 -1
- package/icons/gcp/filestore.js +0 -1
- package/icons/gcp/financial-services-marketplace.js +0 -1
- package/icons/gcp/firestore.js +0 -1
- package/icons/gcp/fleet-engine.js +0 -1
- package/icons/gcp/free-trial.js +0 -1
- package/icons/gcp/game-servers.js +0 -1
- package/icons/gcp/gce-systems-management.js +0 -1
- package/icons/gcp/genomics.js +0 -1
- package/icons/gcp/gke-on-prem.js +0 -1
- package/icons/gcp/google-cloud-marketplace.js +0 -1
- package/icons/gcp/google-kubernetes-engine.js +0 -1
- package/icons/gcp/google-maps-platform.js +0 -1
- package/icons/gcp/healthcare-nlp-api.js +0 -1
- package/icons/gcp/home.js +0 -1
- package/icons/gcp/identity-and-access-management.js +0 -1
- package/icons/gcp/identity-aware-proxy.js +0 -1
- package/icons/gcp/identity-platform.js +0 -1
- package/icons/gcp/iot-core.js +0 -1
- package/icons/gcp/iot-edge.js +0 -1
- package/icons/gcp/key-access-justifications.js +0 -1
- package/icons/gcp/key-management-service.js +0 -1
- package/icons/gcp/kuberun.js +0 -1
- package/icons/gcp/launcher.js +0 -1
- package/icons/gcp/local-ssd.js +0 -1
- package/icons/gcp/looker.js +0 -1
- package/icons/gcp/managed-service-for-microsoft-active-directory.js +0 -1
- package/icons/gcp/media-translation-api.js +0 -1
- package/icons/gcp/memorystore.js +0 -1
- package/icons/gcp/migrate-for-anthos.js +0 -1
- package/icons/gcp/migrate-for-compute-engine.js +0 -1
- package/icons/gcp/my-cloud.js +0 -1
- package/icons/gcp/network-connectivity-center.js +0 -1
- package/icons/gcp/network-intelligence-center.js +0 -1
- package/icons/gcp/network-security.js +0 -1
- package/icons/gcp/network-tiers.js +0 -1
- package/icons/gcp/network-topology.js +0 -1
- package/icons/gcp/onboarding.js +0 -1
- package/icons/gcp/os-configuration-management.js +0 -1
- package/icons/gcp/os-inventory-management.js +0 -1
- package/icons/gcp/os-patch-management.js +0 -1
- package/icons/gcp/partner-interconnect.js +0 -1
- package/icons/gcp/partner-portal.js +0 -1
- package/icons/gcp/performance-dashboard.js +0 -1
- package/icons/gcp/permissions.js +0 -1
- package/icons/gcp/persistent-disk.js +0 -1
- package/icons/gcp/phishing-protection.js +0 -1
- package/icons/gcp/policy-analyzer.js +0 -1
- package/icons/gcp/premium-network-tier.js +0 -1
- package/icons/gcp/private-connectivity.js +0 -1
- package/icons/gcp/private-service-connect.js +0 -1
- package/icons/gcp/producer-portal.js +0 -1
- package/icons/gcp/profiler.js +0 -1
- package/icons/gcp/project.js +0 -1
- package/icons/gcp/pub-sub.js +0 -1
- package/icons/gcp/quantum-engine.js +0 -1
- package/icons/gcp/quotas.js +0 -1
- package/icons/gcp/real-world-insights.js +0 -1
- package/icons/gcp/recommendations-ai.js +0 -1
- package/icons/gcp/release-notes.js +0 -1
- package/icons/gcp/retail-api.js +0 -1
- package/icons/gcp/risk-manager.js +0 -1
- package/icons/gcp/runtime-config.js +0 -1
- package/icons/gcp/secret-manager.js +0 -1
- package/icons/gcp/security-command-center.js +0 -1
- package/icons/gcp/security-health-advisor.js +0 -1
- package/icons/gcp/security-key-enforcement.js +0 -1
- package/icons/gcp/security.js +0 -1
- package/icons/gcp/service-discovery.js +0 -1
- package/icons/gcp/speech-to-text.js +0 -1
- package/icons/gcp/stackdriver.js +0 -1
- package/icons/gcp/standard-network-tier.js +0 -1
- package/icons/gcp/stream-suite.js +0 -1
- package/icons/gcp/support.js +0 -1
- package/icons/gcp/tensorflow-enterprise.js +0 -1
- package/icons/gcp/text-to-speech.js +0 -1
- package/icons/gcp/tools-for-powershell.js +0 -1
- package/icons/gcp/trace.js +0 -1
- package/icons/gcp/traffic-director.js +0 -1
- package/icons/gcp/transfer-appliance.js +0 -1
- package/icons/gcp/transfer.js +0 -1
- package/icons/gcp/user-preferences.js +0 -1
- package/icons/gcp/vertex-ai.js +0 -1
- package/icons/gcp/video-intelligence-api.js +0 -1
- package/icons/gcp/virtual-private-cloud.js +0 -1
- package/icons/gcp/visual-inspection.js +0 -1
- package/icons/gcp/vmware-engine.js +0 -1
- package/icons/gcp/web-risk.js +0 -1
- package/icons/gcp/web-security-scanner.js +0 -1
- package/icons/gcp/workflows.js +0 -1
- package/icons/gcp/workload-identity-pool.js +0 -1
- package/icons/icon.d.ts +0 -2
- package/icons/tech/100tb.js +0 -1
- package/icons/tech/500px.js +0 -1
- package/icons/tech/aarch64.js +0 -1
- package/icons/tech/active-campaign-icon.js +0 -1
- package/icons/tech/active-campaign.js +0 -1
- package/icons/tech/adobe-after-effects.js +0 -1
- package/icons/tech/adobe-animate.js +0 -1
- package/icons/tech/adobe-dreamweaver.js +0 -1
- package/icons/tech/adobe-icon.js +0 -1
- package/icons/tech/adobe-illustrator.js +0 -1
- package/icons/tech/adobe-incopy.js +0 -1
- package/icons/tech/adobe-indesign.js +0 -1
- package/icons/tech/adobe-lightroom.js +0 -1
- package/icons/tech/adobe-photoshop.js +0 -1
- package/icons/tech/adobe-premiere-pro.js +0 -1
- package/icons/tech/adobe-premiere.js +0 -1
- package/icons/tech/adobe-xd.js +0 -1
- package/icons/tech/adobe.js +0 -1
- package/icons/tech/adonis-js.js +0 -1
- package/icons/tech/adonisjs-icon.js +0 -1
- package/icons/tech/adroll.js +0 -1
- package/icons/tech/adyen.js +0 -1
- package/icons/tech/aerogear.js +0 -1
- package/icons/tech/aerospike-icon.js +0 -1
- package/icons/tech/aerospike.js +0 -1
- package/icons/tech/after-effects.js +0 -1
- package/icons/tech/aha.js +0 -1
- package/icons/tech/airbnb-icon.js +0 -1
- package/icons/tech/airbnb.js +0 -1
- package/icons/tech/airbrake.js +0 -1
- package/icons/tech/airflow-icon.js +0 -1
- package/icons/tech/airflow.js +0 -1
- package/icons/tech/airtable.js +0 -1
- package/icons/tech/aix.js +0 -1
- package/icons/tech/akamai.js +0 -1
- package/icons/tech/akka.js +0 -1
- package/icons/tech/alfresco.js +0 -1
- package/icons/tech/algolia.js +0 -1
- package/icons/tech/alpinejs-icon.js +0 -1
- package/icons/tech/alpinejs.js +0 -1
- package/icons/tech/altair.js +0 -1
- package/icons/tech/amazon-chime.js +0 -1
- package/icons/tech/amazon-connect.js +0 -1
- package/icons/tech/amazon-web-services.js +0 -1
- package/icons/tech/amd.js +0 -1
- package/icons/tech/amex-digital.js +0 -1
- package/icons/tech/amex.js +0 -1
- package/icons/tech/amp-icon.js +0 -1
- package/icons/tech/amp.js +0 -1
- package/icons/tech/ampersand.js +0 -1
- package/icons/tech/amplication-icon.js +0 -1
- package/icons/tech/amplication.js +0 -1
- package/icons/tech/amplitude-icon.js +0 -1
- package/icons/tech/amplitude.js +0 -1
- package/icons/tech/anaconda.js +0 -1
- package/icons/tech/analog.js +0 -1
- package/icons/tech/android-icon.js +0 -1
- package/icons/tech/android-studio.js +0 -1
- package/icons/tech/android-vertical.js +0 -1
- package/icons/tech/android.js +0 -1
- package/icons/tech/angellist.js +0 -1
- package/icons/tech/angular-icon.js +0 -1
- package/icons/tech/angular-js.js +0 -1
- package/icons/tech/angular.js +0 -1
- package/icons/tech/ansible.js +0 -1
- package/icons/tech/ant-design.js +0 -1
- package/icons/tech/anthropic-icon.js +0 -1
- package/icons/tech/anthropic.js +0 -1
- package/icons/tech/apache-camel.js +0 -1
- package/icons/tech/apache-cloudstack.js +0 -1
- package/icons/tech/apache-flink-icon.js +0 -1
- package/icons/tech/apache-flink.js +0 -1
- package/icons/tech/apache-spark.js +0 -1
- package/icons/tech/apache-superset-icon.js +0 -1
- package/icons/tech/apache-superset.js +0 -1
- package/icons/tech/apache.js +0 -1
- package/icons/tech/apiary.js +0 -1
- package/icons/tech/apidog-icon.js +0 -1
- package/icons/tech/apidog.js +0 -1
- package/icons/tech/apl.js +0 -1
- package/icons/tech/apollostack.js +0 -1
- package/icons/tech/apostrophe.js +0 -1
- package/icons/tech/appbaseio-icon.js +0 -1
- package/icons/tech/appbaseio.js +0 -1
- package/icons/tech/appcelerator.js +0 -1
- package/icons/tech/appcenter-icon.js +0 -1
- package/icons/tech/appcenter.js +0 -1
- package/icons/tech/appcircle-icon.js +0 -1
- package/icons/tech/appcircle.js +0 -1
- package/icons/tech/appcode.js +0 -1
- package/icons/tech/appdynamics-icon.js +0 -1
- package/icons/tech/appdynamics.js +0 -1
- package/icons/tech/appium.js +0 -1
- package/icons/tech/apple-app-store.js +0 -1
- package/icons/tech/apple-pay.js +0 -1
- package/icons/tech/apple-safari.js +0 -1
- package/icons/tech/apple.js +0 -1
- package/icons/tech/applitools-icon.js +0 -1
- package/icons/tech/applitools.js +0 -1
- package/icons/tech/appsignal-icon.js +0 -1
- package/icons/tech/appsignal.js +0 -1
- package/icons/tech/apptentive.js +0 -1
- package/icons/tech/appveyor.js +0 -1
- package/icons/tech/appwrite-icon.js +0 -1
- package/icons/tech/appwrite.js +0 -1
- package/icons/tech/arangodb-icon.js +0 -1
- package/icons/tech/arangodb.js +0 -1
- package/icons/tech/arc.js +0 -1
- package/icons/tech/architect-icon.js +0 -1
- package/icons/tech/architect.js +0 -1
- package/icons/tech/archlinux.js +0 -1
- package/icons/tech/arduino.js +0 -1
- package/icons/tech/argo-icon.js +0 -1
- package/icons/tech/argo.js +0 -1
- package/icons/tech/argocd.js +0 -1
- package/icons/tech/arm.js +0 -1
- package/icons/tech/armory-icon.js +0 -1
- package/icons/tech/armory.js +0 -1
- package/icons/tech/asana-icon.js +0 -1
- package/icons/tech/asana.js +0 -1
- package/icons/tech/asciidoctor.js +0 -1
- package/icons/tech/assembla-icon.js +0 -1
- package/icons/tech/assembla.js +0 -1
- package/icons/tech/astro-icon.js +0 -1
- package/icons/tech/astro.js +0 -1
- package/icons/tech/astronomer.js +0 -1
- package/icons/tech/async-api-icon.js +0 -1
- package/icons/tech/async-api.js +0 -1
- package/icons/tech/atlassian.js +0 -1
- package/icons/tech/atom-icon.js +0 -1
- package/icons/tech/atom.js +0 -1
- package/icons/tech/atomic-icon.js +0 -1
- package/icons/tech/atomic.js +0 -1
- package/icons/tech/atomicojs-icon.js +0 -1
- package/icons/tech/atomicojs.js +0 -1
- package/icons/tech/aurelia.js +0 -1
- package/icons/tech/aurora.js +0 -1
- package/icons/tech/auth0-icon.js +0 -1
- package/icons/tech/auth0.js +0 -1
- package/icons/tech/authy.js +0 -1
- package/icons/tech/autodesk-maya.js +0 -1
- package/icons/tech/autodesk-shot-grid.js +0 -1
- package/icons/tech/autoit.js +0 -1
- package/icons/tech/autoprefixer.js +0 -1
- package/icons/tech/ava.js +0 -1
- package/icons/tech/awesome.js +0 -1
- package/icons/tech/awk.js +0 -1
- package/icons/tech/aws-amplify.js +0 -1
- package/icons/tech/aws-api-gateway.js +0 -1
- package/icons/tech/aws-app-mesh.js +0 -1
- package/icons/tech/aws-appflow.js +0 -1
- package/icons/tech/aws-appsync.js +0 -1
- package/icons/tech/aws-athena.js +0 -1
- package/icons/tech/aws-aurora.js +0 -1
- package/icons/tech/aws-backup.js +0 -1
- package/icons/tech/aws-batch.js +0 -1
- package/icons/tech/aws-certificate-manager.js +0 -1
- package/icons/tech/aws-cloudformation.js +0 -1
- package/icons/tech/aws-cloudfront.js +0 -1
- package/icons/tech/aws-cloudsearch.js +0 -1
- package/icons/tech/aws-cloudtrail.js +0 -1
- package/icons/tech/aws-cloudwatch.js +0 -1
- package/icons/tech/aws-codebuild.js +0 -1
- package/icons/tech/aws-codecommit.js +0 -1
- package/icons/tech/aws-codedeploy.js +0 -1
- package/icons/tech/aws-codepipeline.js +0 -1
- package/icons/tech/aws-codestar.js +0 -1
- package/icons/tech/aws-cognito.js +0 -1
- package/icons/tech/aws-config.js +0 -1
- package/icons/tech/aws-documentdb.js +0 -1
- package/icons/tech/aws-dynamodb.js +0 -1
- package/icons/tech/aws-ec2.js +0 -1
- package/icons/tech/aws-ecs.js +0 -1
- package/icons/tech/aws-eks.js +0 -1
- package/icons/tech/aws-elastic-beanstalk.js +0 -1
- package/icons/tech/aws-elasticache.js +0 -1
- package/icons/tech/aws-elb.js +0 -1
- package/icons/tech/aws-eventbridge.js +0 -1
- package/icons/tech/aws-fargate.js +0 -1
- package/icons/tech/aws-glacier.js +0 -1
- package/icons/tech/aws-glue.js +0 -1
- package/icons/tech/aws-iam.js +0 -1
- package/icons/tech/aws-keyspaces.js +0 -1
- package/icons/tech/aws-kinesis.js +0 -1
- package/icons/tech/aws-kms.js +0 -1
- package/icons/tech/aws-lake-formation.js +0 -1
- package/icons/tech/aws-lambda.js +0 -1
- package/icons/tech/aws-lightsail.js +0 -1
- package/icons/tech/aws-mq.js +0 -1
- package/icons/tech/aws-msk.js +0 -1
- package/icons/tech/aws-neptune.js +0 -1
- package/icons/tech/aws-open-search.js +0 -1
- package/icons/tech/aws-opsworks.js +0 -1
- package/icons/tech/aws-quicksight.js +0 -1
- package/icons/tech/aws-rds.js +0 -1
- package/icons/tech/aws-redshift.js +0 -1
- package/icons/tech/aws-route53.js +0 -1
- package/icons/tech/aws-s3.js +0 -1
- package/icons/tech/aws-secrets-manager.js +0 -1
- package/icons/tech/aws-ses.js +0 -1
- package/icons/tech/aws-shield.js +0 -1
- package/icons/tech/aws-sns.js +0 -1
- package/icons/tech/aws-sqs.js +0 -1
- package/icons/tech/aws-step-functions.js +0 -1
- package/icons/tech/aws-systems-manager.js +0 -1
- package/icons/tech/aws-timestream.js +0 -1
- package/icons/tech/aws-vpc.js +0 -1
- package/icons/tech/aws-waf.js +0 -1
- package/icons/tech/aws-xray.js +0 -1
- package/icons/tech/aws.js +0 -1
- package/icons/tech/axios.js +0 -1
- package/icons/tech/azios.js +0 -1
- package/icons/tech/azure-devops.js +0 -1
- package/icons/tech/azure-sql-database.js +0 -1
- package/icons/tech/azure.js +0 -1
- package/icons/tech/babel.js +0 -1
- package/icons/tech/backbone-icon.js +0 -1
- package/icons/tech/backbone-js.js +0 -1
- package/icons/tech/backbone.js +0 -1
- package/icons/tech/backerkit.js +0 -1
- package/icons/tech/baker-street.js +0 -1
- package/icons/tech/balena.js +0 -1
- package/icons/tech/ballerina.js +0 -1
- package/icons/tech/bamboo.js +0 -1
- package/icons/tech/basecamp-icon.js +0 -1
- package/icons/tech/basecamp.js +0 -1
- package/icons/tech/basekit.js +0 -1
- package/icons/tech/baseline.js +0 -1
- package/icons/tech/bash-icon.js +0 -1
- package/icons/tech/bash.js +0 -1
- package/icons/tech/batch.js +0 -1
- package/icons/tech/beats.js +0 -1
- package/icons/tech/behance.js +0 -1
- package/icons/tech/bem-2.js +0 -1
- package/icons/tech/bem.js +0 -1
- package/icons/tech/bigpanda.js +0 -1
- package/icons/tech/bing.js +0 -1
- package/icons/tech/biomejs-icon.js +0 -1
- package/icons/tech/biomejs.js +0 -1
- package/icons/tech/bitbar.js +0 -1
- package/icons/tech/bitbucket.js +0 -1
- package/icons/tech/bitcoin.js +0 -1
- package/icons/tech/bitnami.js +0 -1
- package/icons/tech/bitrise-icon.js +0 -1
- package/icons/tech/bitrise.js +0 -1
- package/icons/tech/blender.js +0 -1
- package/icons/tech/blitzjs-icon.js +0 -1
- package/icons/tech/blitzjs.js +0 -1
- package/icons/tech/blocs.js +0 -1
- package/icons/tech/blogger.js +0 -1
- package/icons/tech/blossom.js +0 -1
- package/icons/tech/blueprint.js +0 -1
- package/icons/tech/bluesky.js +0 -1
- package/icons/tech/bluetooth.js +0 -1
- package/icons/tech/booqable-icon.js +0 -1
- package/icons/tech/booqable.js +0 -1
- package/icons/tech/bootstrap.js +0 -1
- package/icons/tech/bosun.js +0 -1
- package/icons/tech/botanalytics.js +0 -1
- package/icons/tech/bourbon.js +0 -1
- package/icons/tech/bower.js +0 -1
- package/icons/tech/box.js +0 -1
- package/icons/tech/brackets.js +0 -1
- package/icons/tech/brainjs.js +0 -1
- package/icons/tech/branch-icon.js +0 -1
- package/icons/tech/branch.js +0 -1
- package/icons/tech/brandfolder-icon.js +0 -1
- package/icons/tech/brandfolder.js +0 -1
- package/icons/tech/brave.js +0 -1
- package/icons/tech/braze-icon.js +0 -1
- package/icons/tech/braze.js +0 -1
- package/icons/tech/broadcom-icon.js +0 -1
- package/icons/tech/broadcom.js +0 -1
- package/icons/tech/broccoli.js +0 -1
- package/icons/tech/brotli.js +0 -1
- package/icons/tech/browserify-icon.js +0 -1
- package/icons/tech/browserify.js +0 -1
- package/icons/tech/browserling.js +0 -1
- package/icons/tech/browserslist.js +0 -1
- package/icons/tech/browserstack.js +0 -1
- package/icons/tech/browsersync.js +0 -1
- package/icons/tech/brunch.js +0 -1
- package/icons/tech/bubble-icon.js +0 -1
- package/icons/tech/bubble.js +0 -1
- package/icons/tech/buck.js +0 -1
- package/icons/tech/buddy.js +0 -1
- package/icons/tech/buffer.js +0 -1
- package/icons/tech/bugherd-icon.js +0 -1
- package/icons/tech/bugherd.js +0 -1
- package/icons/tech/bugsee.js +0 -1
- package/icons/tech/bugsnag.js +0 -1
- package/icons/tech/builder-io-icon.js +0 -1
- package/icons/tech/builder-io.js +0 -1
- package/icons/tech/buildkite-icon.js +0 -1
- package/icons/tech/buildkite.js +0 -1
- package/icons/tech/bulma.js +0 -1
- package/icons/tech/bun.js +0 -1
- package/icons/tech/bunny-net-icon.js +0 -1
- package/icons/tech/bunny-net.js +0 -1
- package/icons/tech/c.js +0 -1
- package/icons/tech/cachet.js +0 -1
- package/icons/tech/cairo-graphics.js +0 -1
- package/icons/tech/cake-php.js +0 -1
- package/icons/tech/cakephp-icon.js +0 -1
- package/icons/tech/calibre-icon.js +0 -1
- package/icons/tech/calibre.js +0 -1
- package/icons/tech/campaignmonitor-icon.js +0 -1
- package/icons/tech/campaignmonitor.js +0 -1
- package/icons/tech/canjs.js +0 -1
- package/icons/tech/canva.js +0 -1
- package/icons/tech/capacitor.js +0 -1
- package/icons/tech/capacitorjs-icon.js +0 -1
- package/icons/tech/capacitorjs.js +0 -1
- package/icons/tech/capistrano.js +0 -1
- package/icons/tech/carbide.js +0 -1
- package/icons/tech/cardano-icon.js +0 -1
- package/icons/tech/cardano.js +0 -1
- package/icons/tech/cassandra.js +0 -1
- package/icons/tech/cent-os.js +0 -1
- package/icons/tech/centos-icon.js +0 -1
- package/icons/tech/certbot.js +0 -1
- package/icons/tech/ceylon.js +0 -1
- package/icons/tech/chai.js +0 -1
- package/icons/tech/chalk.js +0 -1
- package/icons/tech/chargebee-icon.js +0 -1
- package/icons/tech/chargebee.js +0 -1
- package/icons/tech/chartjs.js +0 -1
- package/icons/tech/chef.js +0 -1
- package/icons/tech/chevereto.js +0 -1
- package/icons/tech/chroma.js +0 -1
- package/icons/tech/chromatic-icon.js +0 -1
- package/icons/tech/chromatic.js +0 -1
- package/icons/tech/chrome-web-store.js +0 -1
- package/icons/tech/chrome.js +0 -1
- package/icons/tech/cinder.js +0 -1
- package/icons/tech/circle-ci.js +0 -1
- package/icons/tech/cirrus-ci.js +0 -1
- package/icons/tech/cirrus.js +0 -1
- package/icons/tech/clarity.js +0 -1
- package/icons/tech/claude-icon.js +0 -1
- package/icons/tech/claude.js +0 -1
- package/icons/tech/clio-lang.js +0 -1
- package/icons/tech/clion.js +0 -1
- package/icons/tech/cljs.js +0 -1
- package/icons/tech/clojure-script.js +0 -1
- package/icons/tech/clojure.js +0 -1
- package/icons/tech/close.js +0 -1
- package/icons/tech/cloud9.js +0 -1
- package/icons/tech/cloudacademy-icon.js +0 -1
- package/icons/tech/cloudacademy.js +0 -1
- package/icons/tech/cloudcraft.js +0 -1
- package/icons/tech/cloudflare-icon.js +0 -1
- package/icons/tech/cloudflare-workers-icon.js +0 -1
- package/icons/tech/cloudflare-workers.js +0 -1
- package/icons/tech/cloudflare.js +0 -1
- package/icons/tech/cloudinary-icon.js +0 -1
- package/icons/tech/cloudinary.js +0 -1
- package/icons/tech/cloudlinux.js +0 -1
- package/icons/tech/cmake.js +0 -1
- package/icons/tech/cobalt.js +0 -1
- package/icons/tech/cockpit.js +0 -1
- package/icons/tech/cocoapods.js +0 -1
- package/icons/tech/coda-icon.js +0 -1
- package/icons/tech/coda.js +0 -1
- package/icons/tech/codacy.js +0 -1
- package/icons/tech/code-igniter.js +0 -1
- package/icons/tech/code-pen.js +0 -1
- package/icons/tech/codeac.js +0 -1
- package/icons/tech/codebase.js +0 -1
- package/icons/tech/codebeat.js +0 -1
- package/icons/tech/codecademy.js +0 -1
- package/icons/tech/codeception.js +0 -1
- package/icons/tech/codeclimate-icon.js +0 -1
- package/icons/tech/codeclimate.js +0 -1
- package/icons/tech/codecov-icon.js +0 -1
- package/icons/tech/codecov.js +0 -1
- package/icons/tech/codefactor-icon.js +0 -1
- package/icons/tech/codefactor.js +0 -1
- package/icons/tech/codeigniter-icon.js +0 -1
- package/icons/tech/codepen-icon.js +0 -1
- package/icons/tech/codersrank-icon.js +0 -1
- package/icons/tech/codersrank.js +0 -1
- package/icons/tech/coderwall.js +0 -1
- package/icons/tech/codesandbox-icon.js +0 -1
- package/icons/tech/codesandbox.js +0 -1
- package/icons/tech/codesee-icon.js +0 -1
- package/icons/tech/codesee.js +0 -1
- package/icons/tech/codio.js +0 -1
- package/icons/tech/codium-icon.js +0 -1
- package/icons/tech/codium.js +0 -1
- package/icons/tech/coffee-script.js +0 -1
- package/icons/tech/commitizen.js +0 -1
- package/icons/tech/compass.js +0 -1
- package/icons/tech/componentkit.js +0 -1
- package/icons/tech/compose-multiplatform.js +0 -1
- package/icons/tech/compose.js +0 -1
- package/icons/tech/composer.js +0 -1
- package/icons/tech/conan-io.js +0 -1
- package/icons/tech/concourse.js +0 -1
- package/icons/tech/concretecms-icon.js +0 -1
- package/icons/tech/concretecms.js +0 -1
- package/icons/tech/conda.js +0 -1
- package/icons/tech/confluence.js +0 -1
- package/icons/tech/consul.js +0 -1
- package/icons/tech/contao.js +0 -1
- package/icons/tech/contentful.js +0 -1
- package/icons/tech/convox-icon.js +0 -1
- package/icons/tech/convox.js +0 -1
- package/icons/tech/copyleft-pirate.js +0 -1
- package/icons/tech/copyleft.js +0 -1
- package/icons/tech/corda.js +0 -1
- package/icons/tech/cordova.js +0 -1
- package/icons/tech/cosmosdb.js +0 -1
- package/icons/tech/couchbase.js +0 -1
- package/icons/tech/couchdb-icon.js +0 -1
- package/icons/tech/couchdb.js +0 -1
- package/icons/tech/coursera.js +0 -1
- package/icons/tech/coveralls.js +0 -1
- package/icons/tech/cpanel.js +0 -1
- package/icons/tech/cplusplus.js +0 -1
- package/icons/tech/craftcms.js +0 -1
- package/icons/tech/crashlytics.js +0 -1
- package/icons/tech/crateio.js +0 -1
- package/icons/tech/create-react-app.js +0 -1
- package/icons/tech/createjs.js +0 -1
- package/icons/tech/crossplane-icon.js +0 -1
- package/icons/tech/crossplane.js +0 -1
- package/icons/tech/crucible.js +0 -1
- package/icons/tech/crystal.js +0 -1
- package/icons/tech/csharp.js +0 -1
- package/icons/tech/css3-official.js +0 -1
- package/icons/tech/css3.js +0 -1
- package/icons/tech/cssnext.js +0 -1
- package/icons/tech/cube-icon.js +0 -1
- package/icons/tech/cube.js +0 -1
- package/icons/tech/cucumber.js +0 -1
- package/icons/tech/curl.js +0 -1
- package/icons/tech/customerio-icon.js +0 -1
- package/icons/tech/customerio.js +0 -1
- package/icons/tech/cyclejs.js +0 -1
- package/icons/tech/cypress-icon.js +0 -1
- package/icons/tech/cypress.js +0 -1
- package/icons/tech/d3.js +0 -1
- package/icons/tech/d3js.js +0 -1
- package/icons/tech/dailydev-icon.js +0 -1
- package/icons/tech/dailydev.js +0 -1
- package/icons/tech/daisy-ui-icon.js +0 -1
- package/icons/tech/daisy-ui.js +0 -1
- package/icons/tech/danfo.js +0 -1
- package/icons/tech/dart.js +0 -1
- package/icons/tech/dashlane-icon.js +0 -1
- package/icons/tech/dashlane.js +0 -1
- package/icons/tech/data-grip.js +0 -1
- package/icons/tech/data-spell.js +0 -1
- package/icons/tech/data-station.js +0 -1
- package/icons/tech/database-labs.js +0 -1
- package/icons/tech/datadog-icon.js +0 -1
- package/icons/tech/datadog.js +0 -1
- package/icons/tech/datasette-icon.js +0 -1
- package/icons/tech/datasette.js +0 -1
- package/icons/tech/datocms-icon.js +0 -1
- package/icons/tech/datocms.js +0 -1
- package/icons/tech/dbeaver.js +0 -1
- package/icons/tech/dbt-icon.js +0 -1
- package/icons/tech/dbt.js +0 -1
- package/icons/tech/dcos-icon.js +0 -1
- package/icons/tech/dcos.js +0 -1
- package/icons/tech/debian.js +0 -1
- package/icons/tech/delighted-icon.js +0 -1
- package/icons/tech/delighted.js +0 -1
- package/icons/tech/deno.js +0 -1
- package/icons/tech/dependabot.js +0 -1
- package/icons/tech/deployhq-icon.js +0 -1
- package/icons/tech/deployhq.js +0 -1
- package/icons/tech/derby.js +0 -1
- package/icons/tech/descript-icon.js +0 -1
- package/icons/tech/descript.js +0 -1
- package/icons/tech/designernews.js +0 -1
- package/icons/tech/deviantart-icon.js +0 -1
- package/icons/tech/deviantart.js +0 -1
- package/icons/tech/devicon.js +0 -1
- package/icons/tech/dgraph-icon.js +0 -1
- package/icons/tech/dgraph.js +0 -1
- package/icons/tech/dialogflow.js +0 -1
- package/icons/tech/digital-ocean-icon.js +0 -1
- package/icons/tech/digital-ocean.js +0 -1
- package/icons/tech/dimer.js +0 -1
- package/icons/tech/dinersclub.js +0 -1
- package/icons/tech/discord-icon.js +0 -1
- package/icons/tech/discord-js.js +0 -1
- package/icons/tech/discord.js +0 -1
- package/icons/tech/discourse-icon.js +0 -1
- package/icons/tech/discourse.js +0 -1
- package/icons/tech/discover.js +0 -1
- package/icons/tech/disqus.js +0 -1
- package/icons/tech/django-icon.js +0 -1
- package/icons/tech/django-rest.js +0 -1
- package/icons/tech/django.js +0 -1
- package/icons/tech/dockbit.js +0 -1
- package/icons/tech/docker-icon.js +0 -1
- package/icons/tech/docker.js +0 -1
- package/icons/tech/doctrine.js +0 -1
- package/icons/tech/docusaurus.js +0 -1
- package/icons/tech/dojo-icon.js +0 -1
- package/icons/tech/dojo-toolkit.js +0 -1
- package/icons/tech/dojo.js +0 -1
- package/icons/tech/dolt.js +0 -1
- package/icons/tech/dotnet.js +0 -1
- package/icons/tech/dovetail-icon.js +0 -1
- package/icons/tech/dovetail.js +0 -1
- package/icons/tech/dreamhost.js +0 -1
- package/icons/tech/dribbble-icon.js +0 -1
- package/icons/tech/dribbble.js +0 -1
- package/icons/tech/drift.js +0 -1
- package/icons/tech/drip.js +0 -1
- package/icons/tech/drizzle-icon.js +0 -1
- package/icons/tech/drizzle.js +0 -1
- package/icons/tech/drone-icon.js +0 -1
- package/icons/tech/drone.js +0 -1
- package/icons/tech/drools-icon.js +0 -1
- package/icons/tech/drools.js +0 -1
- package/icons/tech/dropbox.js +0 -1
- package/icons/tech/dropmark.js +0 -1
- package/icons/tech/dropwizard.js +0 -1
- package/icons/tech/dropzone.js +0 -1
- package/icons/tech/drupal-icon.js +0 -1
- package/icons/tech/drupal.js +0 -1
- package/icons/tech/duckduckgo.js +0 -1
- package/icons/tech/dynatrace-icon.js +0 -1
- package/icons/tech/dynatrace.js +0 -1
- package/icons/tech/dyndns.js +0 -1
- package/icons/tech/ebanx.js +0 -1
- package/icons/tech/eclipse-ceylon.js +0 -1
- package/icons/tech/eclipse-icon.js +0 -1
- package/icons/tech/eclipse-ide.js +0 -1
- package/icons/tech/eclipse-vert-x.js +0 -1
- package/icons/tech/eclipse.js +0 -1
- package/icons/tech/ecma.js +0 -1
- package/icons/tech/edgedb.js +0 -1
- package/icons/tech/edgio-icon.js +0 -1
- package/icons/tech/edgio.js +0 -1
- package/icons/tech/editorconfig.js +0 -1
- package/icons/tech/effect-icon.js +0 -1
- package/icons/tech/effect.js +0 -1
- package/icons/tech/effector.js +0 -1
- package/icons/tech/egghead.js +0 -1
- package/icons/tech/elasticbeats.js +0 -1
- package/icons/tech/elasticpath-icon.js +0 -1
- package/icons/tech/elasticpath.js +0 -1
- package/icons/tech/elasticsearch.js +0 -1
- package/icons/tech/electron.js +0 -1
- package/icons/tech/element.js +0 -1
- package/icons/tech/elemental-ui.js +0 -1
- package/icons/tech/elementary.js +0 -1
- package/icons/tech/eleventy-11ty.js +0 -1
- package/icons/tech/eleventy.js +0 -1
- package/icons/tech/elixir.js +0 -1
- package/icons/tech/ello.js +0 -1
- package/icons/tech/elm-classic.js +0 -1
- package/icons/tech/elm.js +0 -1
- package/icons/tech/elo.js +0 -1
- package/icons/tech/emacs-classic.js +0 -1
- package/icons/tech/emacs.js +0 -1
- package/icons/tech/embedded-c.js +0 -1
- package/icons/tech/embedly.js +0 -1
- package/icons/tech/ember-js.js +0 -1
- package/icons/tech/ember-tomster.js +0 -1
- package/icons/tech/ember.js +0 -1
- package/icons/tech/emmet.js +0 -1
- package/icons/tech/enact.js +0 -1
- package/icons/tech/engine-yard-icon.js +0 -1
- package/icons/tech/engine-yard.js +0 -1
- package/icons/tech/envato.js +0 -1
- package/icons/tech/envoy-icon.js +0 -1
- package/icons/tech/envoy.js +0 -1
- package/icons/tech/envoyer.js +0 -1
- package/icons/tech/eraser-icon.js +0 -1
- package/icons/tech/eraser.js +0 -1
- package/icons/tech/erlang.js +0 -1
- package/icons/tech/esbuild.js +0 -1
- package/icons/tech/esdoc.js +0 -1
- package/icons/tech/eslint-old.js +0 -1
- package/icons/tech/eslint.js +0 -1
- package/icons/tech/eta-icon.js +0 -1
- package/icons/tech/eta.js +0 -1
- package/icons/tech/etcd.js +0 -1
- package/icons/tech/ethereum-color.js +0 -1
- package/icons/tech/ethereum.js +0 -1
- package/icons/tech/ethers.js +0 -1
- package/icons/tech/ethnio.js +0 -1
- package/icons/tech/eventbrite-icon.js +0 -1
- package/icons/tech/eventbrite.js +0 -1
- package/icons/tech/eventsentry.js +0 -1
- package/icons/tech/evergreen-icon.js +0 -1
- package/icons/tech/evergreen.js +0 -1
- package/icons/tech/expo-icon.js +0 -1
- package/icons/tech/expo.js +0 -1
- package/icons/tech/express.js +0 -1
- package/icons/tech/fabric.js +0 -1
- package/icons/tech/facebook.js +0 -1
- package/icons/tech/faker.js +0 -1
- package/icons/tech/falcor.js +0 -1
- package/icons/tech/fast-api.js +0 -1
- package/icons/tech/fastapi-icon.js +0 -1
- package/icons/tech/fastify-icon.js +0 -1
- package/icons/tech/fastify.js +0 -1
- package/icons/tech/fastlane.js +0 -1
- package/icons/tech/fastly.js +0 -1
- package/icons/tech/fauna-icon.js +0 -1
- package/icons/tech/fauna.js +0 -1
- package/icons/tech/feathers.js +0 -1
- package/icons/tech/feathersjs.js +0 -1
- package/icons/tech/fedora.js +0 -1
- package/icons/tech/fetch.js +0 -1
- package/icons/tech/ffmpeg-icon.js +0 -1
- package/icons/tech/ffmpeg.js +0 -1
- package/icons/tech/figma.js +0 -1
- package/icons/tech/file-zilla.js +0 -1
- package/icons/tech/firebase-icon.js +0 -1
- package/icons/tech/firebase.js +0 -1
- package/icons/tech/firefox.js +0 -1
- package/icons/tech/flannel.js +0 -1
- package/icons/tech/flarum.js +0 -1
- package/icons/tech/flask.js +0 -1
- package/icons/tech/flat-ui.js +0 -1
- package/icons/tech/flattr-icon.js +0 -1
- package/icons/tech/flattr.js +0 -1
- package/icons/tech/fleep.js +0 -1
- package/icons/tech/flickr-icon.js +0 -1
- package/icons/tech/flickr.js +0 -1
- package/icons/tech/flight.js +0 -1
- package/icons/tech/floodio.js +0 -1
- package/icons/tech/flow.js +0 -1
- package/icons/tech/flowxo.js +0 -1
- package/icons/tech/floydhub.js +0 -1
- package/icons/tech/flutter.js +0 -1
- package/icons/tech/flux.js +0 -1
- package/icons/tech/fluxxor.js +0 -1
- package/icons/tech/fly-icon.js +0 -1
- package/icons/tech/fly.js +0 -1
- package/icons/tech/fogbugz-icon.js +0 -1
- package/icons/tech/fogbugz.js +0 -1
- package/icons/tech/fomo-icon.js +0 -1
- package/icons/tech/fomo.js +0 -1
- package/icons/tech/font-awesome.js +0 -1
- package/icons/tech/forestadmin-icon.js +0 -1
- package/icons/tech/forestadmin.js +0 -1
- package/icons/tech/forever.js +0 -1
- package/icons/tech/formkeep.js +0 -1
- package/icons/tech/fortran.js +0 -1
- package/icons/tech/foundation.js +0 -1
- package/icons/tech/foundationdb-icon.js +0 -1
- package/icons/tech/foundationdb.js +0 -1
- package/icons/tech/framer.js +0 -1
- package/icons/tech/framework7-icon.js +0 -1
- package/icons/tech/framework7.js +0 -1
- package/icons/tech/freebsd.js +0 -1
- package/icons/tech/freedcamp-icon.js +0 -1
- package/icons/tech/freedcamp.js +0 -1
- package/icons/tech/freedomdefined.js +0 -1
- package/icons/tech/fresh.js +0 -1
- package/icons/tech/frontapp.js +0 -1
- package/icons/tech/fsharp.js +0 -1
- package/icons/tech/fuchsia.js +0 -1
- package/icons/tech/galliumos.js +0 -1
- package/icons/tech/game-analytics-icon.js +0 -1
- package/icons/tech/game-analytics.js +0 -1
- package/icons/tech/ganache-icon.js +0 -1
- package/icons/tech/ganache.js +0 -1
- package/icons/tech/gatling.js +0 -1
- package/icons/tech/gatsby.js +0 -1
- package/icons/tech/gazebo.js +0 -1
- package/icons/tech/gcc.js +0 -1
- package/icons/tech/geekbot.js +0 -1
- package/icons/tech/geetest-icon.js +0 -1
- package/icons/tech/geetest.js +0 -1
- package/icons/tech/gentoo.js +0 -1
- package/icons/tech/getyourguide.js +0 -1
- package/icons/tech/ghost.js +0 -1
- package/icons/tech/giantswarm.js +0 -1
- package/icons/tech/gimp.js +0 -1
- package/icons/tech/gin.js +0 -1
- package/icons/tech/git-icon.js +0 -1
- package/icons/tech/git.js +0 -1
- package/icons/tech/gitboard.js +0 -1
- package/icons/tech/gitbook.js +0 -1
- package/icons/tech/github-actions.js +0 -1
- package/icons/tech/github-codespaces.js +0 -1
- package/icons/tech/github-copilot.js +0 -1
- package/icons/tech/github-icon.js +0 -1
- package/icons/tech/github-octocat.js +0 -1
- package/icons/tech/github.js +0 -1
- package/icons/tech/gitkraken.js +0 -1
- package/icons/tech/gitlab-icon.js +0 -1
- package/icons/tech/gitlab.js +0 -1
- package/icons/tech/gitpod.js +0 -1
- package/icons/tech/gitter.js +0 -1
- package/icons/tech/gitup.js +0 -1
- package/icons/tech/glamorous-icon.js +0 -1
- package/icons/tech/glamorous.js +0 -1
- package/icons/tech/gleam.js +0 -1
- package/icons/tech/glimmerjs.js +0 -1
- package/icons/tech/glint.js +0 -1
- package/icons/tech/glitch-icon.js +0 -1
- package/icons/tech/glitch.js +0 -1
- package/icons/tech/gnome-icon.js +0 -1
- package/icons/tech/gnome.js +0 -1
- package/icons/tech/gnu-emacs.js +0 -1
- package/icons/tech/gnu-net.js +0 -1
- package/icons/tech/gnu.js +0 -1
- package/icons/tech/gnupg-icon.js +0 -1
- package/icons/tech/gnupg.js +0 -1
- package/icons/tech/go-land.js +0 -1
- package/icons/tech/go.js +0 -1
- package/icons/tech/gocd.js +0 -1
- package/icons/tech/godot-engine.js +0 -1
- package/icons/tech/godot-icon.js +0 -1
- package/icons/tech/godot.js +0 -1
- package/icons/tech/gohorse.js +0 -1
- package/icons/tech/google-360suite.js +0 -1
- package/icons/tech/google-admob.js +0 -1
- package/icons/tech/google-ads.js +0 -1
- package/icons/tech/google-adsense.js +0 -1
- package/icons/tech/google-analytics.js +0 -1
- package/icons/tech/google-bard-icon.js +0 -1
- package/icons/tech/google-bard.js +0 -1
- package/icons/tech/google-calendar.js +0 -1
- package/icons/tech/google-cloud-functions.js +0 -1
- package/icons/tech/google-cloud-run.js +0 -1
- package/icons/tech/google-cloud.js +0 -1
- package/icons/tech/google-data-studio.js +0 -1
- package/icons/tech/google-developers.js +0 -1
- package/icons/tech/google-domains-icon.js +0 -1
- package/icons/tech/google-domains.js +0 -1
- package/icons/tech/google-drive.js +0 -1
- package/icons/tech/google-fit.js +0 -1
- package/icons/tech/google-gemini.js +0 -1
- package/icons/tech/google-gmail.js +0 -1
- package/icons/tech/google-home.js +0 -1
- package/icons/tech/google-icon.js +0 -1
- package/icons/tech/google-keep.js +0 -1
- package/icons/tech/google-maps.js +0 -1
- package/icons/tech/google-marketing-platform.js +0 -1
- package/icons/tech/google-meet.js +0 -1
- package/icons/tech/google-one.js +0 -1
- package/icons/tech/google-optimize.js +0 -1
- package/icons/tech/google-palm.js +0 -1
- package/icons/tech/google-pay.js +0 -1
- package/icons/tech/google-photos.js +0 -1
- package/icons/tech/google-play-console-icon.js +0 -1
- package/icons/tech/google-play-console.js +0 -1
- package/icons/tech/google-play-icon.js +0 -1
- package/icons/tech/google-play.js +0 -1
- package/icons/tech/google-search-console.js +0 -1
- package/icons/tech/google-tag-manager.js +0 -1
- package/icons/tech/google-workspace.js +0 -1
- package/icons/tech/google.js +0 -1
- package/icons/tech/gopher.js +0 -1
- package/icons/tech/gradio-icon.js +0 -1
- package/icons/tech/gradio.js +0 -1
- package/icons/tech/gradle.js +0 -1
- package/icons/tech/grafana.js +0 -1
- package/icons/tech/grails.js +0 -1
- package/icons/tech/grammarly-icon.js +0 -1
- package/icons/tech/grammarly.js +0 -1
- package/icons/tech/graphene.js +0 -1
- package/icons/tech/graphql.js +0 -1
- package/icons/tech/grav.js +0 -1
- package/icons/tech/gravatar-icon.js +0 -1
- package/icons/tech/gravatar.js +0 -1
- package/icons/tech/graylog-icon.js +0 -1
- package/icons/tech/graylog.js +0 -1
- package/icons/tech/greensock-icon.js +0 -1
- package/icons/tech/greensock.js +0 -1
- package/icons/tech/gridsome-icon.js +0 -1
- package/icons/tech/gridsome.js +0 -1
- package/icons/tech/grommet.js +0 -1
- package/icons/tech/groovehq.js +0 -1
- package/icons/tech/groovy.js +0 -1
- package/icons/tech/grove.js +0 -1
- package/icons/tech/growth-book-icon.js +0 -1
- package/icons/tech/growth-book.js +0 -1
- package/icons/tech/grpc.js +0 -1
- package/icons/tech/grunt.js +0 -1
- package/icons/tech/gruntjs.js +0 -1
- package/icons/tech/gulp.js +0 -1
- package/icons/tech/gulpjs.js +0 -1
- package/icons/tech/gunicorn.js +0 -1
- package/icons/tech/gunjs.js +0 -1
- package/icons/tech/gusto.js +0 -1
- package/icons/tech/gwt.js +0 -1
- package/icons/tech/hack.js +0 -1
- package/icons/tech/hacker-one.js +0 -1
- package/icons/tech/hadoop.js +0 -1
- package/icons/tech/haiku-icon.js +0 -1
- package/icons/tech/haiku.js +0 -1
- package/icons/tech/haml.js +0 -1
- package/icons/tech/hanami.js +0 -1
- package/icons/tech/handlebars.js +0 -1
- package/icons/tech/hapi.js +0 -1
- package/icons/tech/hardhat-icon.js +0 -1
- package/icons/tech/hardhat.js +0 -1
- package/icons/tech/harness-icon.js +0 -1
- package/icons/tech/harness.js +0 -1
- package/icons/tech/harvester.js +0 -1
- package/icons/tech/hashicorp-icon.js +0 -1
- package/icons/tech/hashicorp-vault.js +0 -1
- package/icons/tech/hashicorp.js +0 -1
- package/icons/tech/hashnode-icon.js +0 -1
- package/icons/tech/hashnode.js +0 -1
- package/icons/tech/haskell-icon.js +0 -1
- package/icons/tech/haskell.js +0 -1
- package/icons/tech/hasura-icon.js +0 -1
- package/icons/tech/hasura.js +0 -1
- package/icons/tech/haxe.js +0 -1
- package/icons/tech/haxl.js +0 -1
- package/icons/tech/hbase.js +0 -1
- package/icons/tech/hcaptcha-icon.js +0 -1
- package/icons/tech/hcaptcha.js +0 -1
- package/icons/tech/headlessui-icon.js +0 -1
- package/icons/tech/headlessui.js +0 -1
- package/icons/tech/heap-icon.js +0 -1
- package/icons/tech/heap.js +0 -1
- package/icons/tech/helm.js +0 -1
- package/icons/tech/helpscout-icon.js +0 -1
- package/icons/tech/helpscout.js +0 -1
- package/icons/tech/hermes.js +0 -1
- package/icons/tech/heroku-icon.js +0 -1
- package/icons/tech/heroku-redis.js +0 -1
- package/icons/tech/heroku.js +0 -1
- package/icons/tech/hexo.js +0 -1
- package/icons/tech/hhvm.js +0 -1
- package/icons/tech/hibernate.js +0 -1
- package/icons/tech/highcharts.js +0 -1
- package/icons/tech/hipercard.js +0 -1
- package/icons/tech/homebrew.js +0 -1
- package/icons/tech/hono.js +0 -1
- package/icons/tech/hookstate.js +0 -1
- package/icons/tech/hootsuite-icon.js +0 -1
- package/icons/tech/hootsuite.js +0 -1
- package/icons/tech/hosted-graphite.js +0 -1
- package/icons/tech/hostgator-icon.js +0 -1
- package/icons/tech/hostgator.js +0 -1
- package/icons/tech/hotjar-icon.js +0 -1
- package/icons/tech/hotjar.js +0 -1
- package/icons/tech/houndci.js +0 -1
- package/icons/tech/html5-boilerplate.js +0 -1
- package/icons/tech/html5.js +0 -1
- package/icons/tech/htmx-icon.js +0 -1
- package/icons/tech/htmx.js +0 -1
- package/icons/tech/httpie-icon.js +0 -1
- package/icons/tech/httpie.js +0 -1
- package/icons/tech/hubspot.js +0 -1
- package/icons/tech/hugging-face-icon.js +0 -1
- package/icons/tech/hugging-face.js +0 -1
- package/icons/tech/huggy.js +0 -1
- package/icons/tech/hugo.js +0 -1
- package/icons/tech/humongous.js +0 -1
- package/icons/tech/hyper.js +0 -1
- package/icons/tech/hyperapp.js +0 -1
- package/icons/tech/ibm-spss-statistics.js +0 -1
- package/icons/tech/ibm.js +0 -1
- package/icons/tech/ie10.js +0 -1
- package/icons/tech/ieee.js +0 -1
- package/icons/tech/ietf.js +0 -1
- package/icons/tech/ifttt.js +0 -1
- package/icons/tech/imagemin.js +0 -1
- package/icons/tech/imba-icon.js +0 -1
- package/icons/tech/imba.js +0 -1
- package/icons/tech/immer-icon.js +0 -1
- package/icons/tech/immer.js +0 -1
- package/icons/tech/immutable.js +0 -1
- package/icons/tech/impala.js +0 -1
- package/icons/tech/importio-icon.js +0 -1
- package/icons/tech/importio.js +0 -1
- package/icons/tech/incident-icon.js +0 -1
- package/icons/tech/incident.js +0 -1
- package/icons/tech/infer.js +0 -1
- package/icons/tech/inferno.js +0 -1
- package/icons/tech/influxdb-icon.js +0 -1
- package/icons/tech/influxdb.js +0 -1
- package/icons/tech/ink.js +0 -1
- package/icons/tech/inkscape.js +0 -1
- package/icons/tech/insomnia.js +0 -1
- package/icons/tech/instagram-icon.js +0 -1
- package/icons/tech/instagram.js +0 -1
- package/icons/tech/intel.js +0 -1
- package/icons/tech/intellij-idea.js +0 -1
- package/icons/tech/intercom-icon.js +0 -1
- package/icons/tech/intercom.js +0 -1
- package/icons/tech/internet-computer-icon.js +0 -1
- package/icons/tech/internet-computer.js +0 -1
- package/icons/tech/internetexplorer.js +0 -1
- package/icons/tech/invision-icon.js +0 -1
- package/icons/tech/invision.js +0 -1
- package/icons/tech/ionic-icon.js +0 -1
- package/icons/tech/ionic.js +0 -1
- package/icons/tech/ios.js +0 -1
- package/icons/tech/iron-icon.js +0 -1
- package/icons/tech/iron.js +0 -1
- package/icons/tech/itsalive-icon.js +0 -1
- package/icons/tech/itsalive.js +0 -1
- package/icons/tech/jade.js +0 -1
- package/icons/tech/jaeger.js +0 -1
- package/icons/tech/jamstack-icon.js +0 -1
- package/icons/tech/jamstack.js +0 -1
- package/icons/tech/jasmine.js +0 -1
- package/icons/tech/java.js +0 -1
- package/icons/tech/javascript.js +0 -1
- package/icons/tech/jcb.js +0 -1
- package/icons/tech/jeet.js +0 -1
- package/icons/tech/jekyll.js +0 -1
- package/icons/tech/jenkins.js +0 -1
- package/icons/tech/jest.js +0 -1
- package/icons/tech/jetbrains-icon.js +0 -1
- package/icons/tech/jetbrains-space-icon.js +0 -1
- package/icons/tech/jetbrains-space.js +0 -1
- package/icons/tech/jetbrains.js +0 -1
- package/icons/tech/jfrog.js +0 -1
- package/icons/tech/jhipster-icon.js +0 -1
- package/icons/tech/jhipster.js +0 -1
- package/icons/tech/jira-align.js +0 -1
- package/icons/tech/jira.js +0 -1
- package/icons/tech/joomla.js +0 -1
- package/icons/tech/jotai.js +0 -1
- package/icons/tech/jquery-mobile.js +0 -1
- package/icons/tech/jquery.js +0 -1
- package/icons/tech/jruby.js +0 -1
- package/icons/tech/jsbin.js +0 -1
- package/icons/tech/jsdelivr.js +0 -1
- package/icons/tech/jsdom.js +0 -1
- package/icons/tech/jsfiddle.js +0 -1
- package/icons/tech/json-ld.js +0 -1
- package/icons/tech/json-schema-icon.js +0 -1
- package/icons/tech/json-schema.js +0 -1
- package/icons/tech/json.js +0 -1
- package/icons/tech/jspm.js +0 -1
- package/icons/tech/jss.js +0 -1
- package/icons/tech/juju.js +0 -1
- package/icons/tech/jule.js +0 -1
- package/icons/tech/julia.js +0 -1
- package/icons/tech/junit.js +0 -1
- package/icons/tech/jupyter.js +0 -1
- package/icons/tech/jwt-icon.js +0 -1
- package/icons/tech/jwt.js +0 -1
- package/icons/tech/k3os.js +0 -1
- package/icons/tech/k3s.js +0 -1
- package/icons/tech/kafka-icon.js +0 -1
- package/icons/tech/kafka.js +0 -1
- package/icons/tech/kaggle.js +0 -1
- package/icons/tech/kaios.js +0 -1
- package/icons/tech/kallithea.js +0 -1
- package/icons/tech/karate.js +0 -1
- package/icons/tech/karma.js +0 -1
- package/icons/tech/katalon-icon.js +0 -1
- package/icons/tech/katalon.js +0 -1
- package/icons/tech/kde.js +0 -1
- package/icons/tech/keen.js +0 -1
- package/icons/tech/kemal.js +0 -1
- package/icons/tech/keras.js +0 -1
- package/icons/tech/keycdn-icon.js +0 -1
- package/icons/tech/keycdn.js +0 -1
- package/icons/tech/keydb-icon.js +0 -1
- package/icons/tech/keydb.js +0 -1
- package/icons/tech/keystonejs.js +0 -1
- package/icons/tech/khan-academy-icon.js +0 -1
- package/icons/tech/khan-academy.js +0 -1
- package/icons/tech/kibana.js +0 -1
- package/icons/tech/kickstarter-icon.js +0 -1
- package/icons/tech/kickstarter.js +0 -1
- package/icons/tech/kinto-icon.js +0 -1
- package/icons/tech/kinto.js +0 -1
- package/icons/tech/kirby-icon.js +0 -1
- package/icons/tech/kirby.js +0 -1
- package/icons/tech/knex-js.js +0 -1
- package/icons/tech/knex.js +0 -1
- package/icons/tech/knockout.js +0 -1
- package/icons/tech/koa.js +0 -1
- package/icons/tech/kong-icon.js +0 -1
- package/icons/tech/kong.js +0 -1
- package/icons/tech/kops.js +0 -1
- package/icons/tech/koreio.js +0 -1
- package/icons/tech/kotlin-icon.js +0 -1
- package/icons/tech/kotlin.js +0 -1
- package/icons/tech/kraken.js +0 -1
- package/icons/tech/krakenjs.js +0 -1
- package/icons/tech/ktor-icon.js +0 -1
- package/icons/tech/ktor.js +0 -1
- package/icons/tech/kubernetes.js +0 -1
- package/icons/tech/kustomer.js +0 -1
- package/icons/tech/labview.js +0 -1
- package/icons/tech/languagetool.js +0 -1
- package/icons/tech/laravel.js +0 -1
- package/icons/tech/lastfm.js +0 -1
- package/icons/tech/lateral-icon.js +0 -1
- package/icons/tech/lateral.js +0 -1
- package/icons/tech/latex.js +0 -1
- package/icons/tech/launchdarkly-icon.js +0 -1
- package/icons/tech/launchdarkly.js +0 -1
- package/icons/tech/launchrock.js +0 -1
- package/icons/tech/leaflet.js +0 -1
- package/icons/tech/leankit-icon.js +0 -1
- package/icons/tech/leankit.js +0 -1
- package/icons/tech/lerna.js +0 -1
- package/icons/tech/less-js.js +0 -1
- package/icons/tech/less.js +0 -1
- package/icons/tech/lets-cloud.js +0 -1
- package/icons/tech/letsencrypt.js +0 -1
- package/icons/tech/leveldb.js +0 -1
- package/icons/tech/lexical-icon.js +0 -1
- package/icons/tech/lexical.js +0 -1
- package/icons/tech/liftweb.js +0 -1
- package/icons/tech/lighthouse.js +0 -1
- package/icons/tech/lightstep-icon.js +0 -1
- package/icons/tech/lightstep.js +0 -1
- package/icons/tech/lighttpd.js +0 -1
- package/icons/tech/linear-icon.js +0 -1
- package/icons/tech/linear.js +0 -1
- package/icons/tech/linkedin-icon.js +0 -1
- package/icons/tech/linkedin.js +0 -1
- package/icons/tech/linkerd.js +0 -1
- package/icons/tech/linode.js +0 -1
- package/icons/tech/linux-mint.js +0 -1
- package/icons/tech/linux-tux.js +0 -1
- package/icons/tech/linux.js +0 -1
- package/icons/tech/liquibase.js +0 -1
- package/icons/tech/lit-icon.js +0 -1
- package/icons/tech/lit.js +0 -1
- package/icons/tech/litmus.js +0 -1
- package/icons/tech/livewire.js +0 -1
- package/icons/tech/llvm.js +0 -1
- package/icons/tech/loader.js +0 -1
- package/icons/tech/lodash.js +0 -1
- package/icons/tech/logentries.js +0 -1
- package/icons/tech/logstash.js +0 -1
- package/icons/tech/lookback.js +0 -1
- package/icons/tech/looker-icon.js +0 -1
- package/icons/tech/looker.js +0 -1
- package/icons/tech/loom-icon.js +0 -1
- package/icons/tech/loom.js +0 -1
- package/icons/tech/loopback-icon.js +0 -1
- package/icons/tech/loopback.js +0 -1
- package/icons/tech/losant.js +0 -1
- package/icons/tech/lua.js +0 -1
- package/icons/tech/lucene-net.js +0 -1
- package/icons/tech/lucene.js +0 -1
- package/icons/tech/lumen.js +0 -1
- package/icons/tech/mac-os.js +0 -1
- package/icons/tech/madge.js +0 -1
- package/icons/tech/maestro.js +0 -1
- package/icons/tech/mageia.js +0 -1
- package/icons/tech/magento.js +0 -1
- package/icons/tech/mailchimp-freddie.js +0 -1
- package/icons/tech/mailchimp.js +0 -1
- package/icons/tech/maildeveloper.js +0 -1
- package/icons/tech/mailgun-icon.js +0 -1
- package/icons/tech/mailgun.js +0 -1
- package/icons/tech/mailjet-icon.js +0 -1
- package/icons/tech/mailjet.js +0 -1
- package/icons/tech/malinajs.js +0 -1
- package/icons/tech/manjaro.js +0 -1
- package/icons/tech/mantine-icon.js +0 -1
- package/icons/tech/mantine.js +0 -1
- package/icons/tech/mapbox-icon.js +0 -1
- package/icons/tech/mapbox.js +0 -1
- package/icons/tech/maps-me.js +0 -1
- package/icons/tech/mapzen-icon.js +0 -1
- package/icons/tech/mapzen.js +0 -1
- package/icons/tech/mariadb-icon.js +0 -1
- package/icons/tech/mariadb.js +0 -1
- package/icons/tech/marionette.js +0 -1
- package/icons/tech/markdown.js +0 -1
- package/icons/tech/marko.js +0 -1
- package/icons/tech/marvel.js +0 -1
- package/icons/tech/mastercard.js +0 -1
- package/icons/tech/mastodon-icon.js +0 -1
- package/icons/tech/mastodon.js +0 -1
- package/icons/tech/material-ui.js +0 -1
- package/icons/tech/materialize.js +0 -1
- package/icons/tech/materializecss.js +0 -1
- package/icons/tech/matlab.js +0 -1
- package/icons/tech/matomo-icon.js +0 -1
- package/icons/tech/matomo.js +0 -1
- package/icons/tech/matplotlib-icon.js +0 -1
- package/icons/tech/matplotlib.js +0 -1
- package/icons/tech/matter-icon.js +0 -1
- package/icons/tech/matter.js +0 -1
- package/icons/tech/mattermost-icon.js +0 -1
- package/icons/tech/mattermost.js +0 -1
- package/icons/tech/mautic-icon.js +0 -1
- package/icons/tech/mautic.js +0 -1
- package/icons/tech/maven.js +0 -1
- package/icons/tech/mdn.js +0 -1
- package/icons/tech/mdx.js +0 -1
- package/icons/tech/medium-icon.js +0 -1
- package/icons/tech/medium.js +0 -1
- package/icons/tech/medusa-icon.js +0 -1
- package/icons/tech/medusa.js +0 -1
- package/icons/tech/meilisearch.js +0 -1
- package/icons/tech/memcached.js +0 -1
- package/icons/tech/memgraph.js +0 -1
- package/icons/tech/mention.js +0 -1
- package/icons/tech/mercurial.js +0 -1
- package/icons/tech/mesos.js +0 -1
- package/icons/tech/messenger.js +0 -1
- package/icons/tech/meta-icon.js +0 -1
- package/icons/tech/meta.js +0 -1
- package/icons/tech/metabase.js +0 -1
- package/icons/tech/metamask-icon.js +0 -1
- package/icons/tech/metamask.js +0 -1
- package/icons/tech/meteor-icon.js +0 -1
- package/icons/tech/meteor-js.js +0 -1
- package/icons/tech/meteor.js +0 -1
- package/icons/tech/micro-icon.js +0 -1
- package/icons/tech/micro-python.js +0 -1
- package/icons/tech/micro.js +0 -1
- package/icons/tech/microcosm.js +0 -1
- package/icons/tech/micron-icon.js +0 -1
- package/icons/tech/micron.js +0 -1
- package/icons/tech/microsoft-azure.js +0 -1
- package/icons/tech/microsoft-edge.js +0 -1
- package/icons/tech/microsoft-icon.js +0 -1
- package/icons/tech/microsoft-onedrive.js +0 -1
- package/icons/tech/microsoft-power-bi.js +0 -1
- package/icons/tech/microsoft-sql-server.js +0 -1
- package/icons/tech/microsoft-teams.js +0 -1
- package/icons/tech/microsoft-windows-icon.js +0 -1
- package/icons/tech/microsoft-windows.js +0 -1
- package/icons/tech/microsoft.js +0 -1
- package/icons/tech/mida-icon.js +0 -1
- package/icons/tech/mida.js +0 -1
- package/icons/tech/middleman.js +0 -1
- package/icons/tech/midjourney.js +0 -1
- package/icons/tech/milligram.js +0 -1
- package/icons/tech/million-icon.js +0 -1
- package/icons/tech/million.js +0 -1
- package/icons/tech/milvus-icon.js +0 -1
- package/icons/tech/milvus.js +0 -1
- package/icons/tech/mindsdb-icon.js +0 -1
- package/icons/tech/mindsdb.js +0 -1
- package/icons/tech/minitab.js +0 -1
- package/icons/tech/mint-lang.js +0 -1
- package/icons/tech/mio.js +0 -1
- package/icons/tech/miro-icon.js +0 -1
- package/icons/tech/miro.js +0 -1
- package/icons/tech/mist.js +0 -1
- package/icons/tech/mistral-ai-icon.js +0 -1
- package/icons/tech/mistral-ai.js +0 -1
- package/icons/tech/mithril.js +0 -1
- package/icons/tech/mixmax.js +0 -1
- package/icons/tech/mixpanel.js +0 -1
- package/icons/tech/mlab.js +0 -1
- package/icons/tech/mob-x.js +0 -1
- package/icons/tech/mocha.js +0 -1
- package/icons/tech/mockflow-icon.js +0 -1
- package/icons/tech/mockflow.js +0 -1
- package/icons/tech/modernizr.js +0 -1
- package/icons/tech/modx-icon.js +0 -1
- package/icons/tech/modx.js +0 -1
- package/icons/tech/moleculer.js +0 -1
- package/icons/tech/momentjs.js +0 -1
- package/icons/tech/monday-icon.js +0 -1
- package/icons/tech/monday.js +0 -1
- package/icons/tech/monero.js +0 -1
- package/icons/tech/mongodb-icon.js +0 -1
- package/icons/tech/mongodb.js +0 -1
- package/icons/tech/mongoose-js.js +0 -1
- package/icons/tech/mono.js +0 -1
- package/icons/tech/moodle.js +0 -1
- package/icons/tech/moon.js +0 -1
- package/icons/tech/mootools.js +0 -1
- package/icons/tech/morpheus-icon.js +0 -1
- package/icons/tech/morpheus.js +0 -1
- package/icons/tech/mozilla.js +0 -1
- package/icons/tech/mparticle-icon.js +0 -1
- package/icons/tech/mparticle.js +0 -1
- package/icons/tech/mps-icon.js +0 -1
- package/icons/tech/mps.js +0 -1
- package/icons/tech/ms-dos.js +0 -1
- package/icons/tech/msw-icon.js +0 -1
- package/icons/tech/msw.js +0 -1
- package/icons/tech/multipass.js +0 -1
- package/icons/tech/mysql-icon.js +0 -1
- package/icons/tech/mysql.js +0 -1
- package/icons/tech/naiveui.js +0 -1
- package/icons/tech/namecheap.js +0 -1
- package/icons/tech/nano.js +0 -1
- package/icons/tech/nanonets.js +0 -1
- package/icons/tech/nasm.js +0 -1
- package/icons/tech/nativescript.js +0 -1
- package/icons/tech/nats-icon.js +0 -1
- package/icons/tech/nats.js +0 -1
- package/icons/tech/neat.js +0 -1
- package/icons/tech/neo4j.js +0 -1
- package/icons/tech/neon-icon.js +0 -1
- package/icons/tech/neon.js +0 -1
- package/icons/tech/neovim.js +0 -1
- package/icons/tech/nerog.js +0 -1
- package/icons/tech/nestjs.js +0 -1
- package/icons/tech/net-core.js +0 -1
- package/icons/tech/net.js +0 -1
- package/icons/tech/netbeans.js +0 -1
- package/icons/tech/netflix-icon.js +0 -1
- package/icons/tech/netflix.js +0 -1
- package/icons/tech/netlify-icon.js +0 -1
- package/icons/tech/netlify.js +0 -1
- package/icons/tech/network-x.js +0 -1
- package/icons/tech/neverinstall-icon.js +0 -1
- package/icons/tech/neverinstall.js +0 -1
- package/icons/tech/new-relic-icon.js +0 -1
- package/icons/tech/new-relic.js +0 -1
- package/icons/tech/new4j.js +0 -1
- package/icons/tech/nextjs-icon.js +0 -1
- package/icons/tech/nextjs.js +0 -1
- package/icons/tech/nginx.js +0 -1
- package/icons/tech/ngrok.js +0 -1
- package/icons/tech/nhibernate.js +0 -1
- package/icons/tech/nhost-icon.js +0 -1
- package/icons/tech/nhost.js +0 -1
- package/icons/tech/nightwatch.js +0 -1
- package/icons/tech/nim-lang.js +0 -1
- package/icons/tech/nim.js +0 -1
- package/icons/tech/nimble.js +0 -1
- package/icons/tech/nix.js +0 -1
- package/icons/tech/nocodb.js +0 -1
- package/icons/tech/nodal.js +0 -1
- package/icons/tech/node-sass.js +0 -1
- package/icons/tech/nodebots.js +0 -1
- package/icons/tech/nodejs-icon-alt.js +0 -1
- package/icons/tech/nodejs-icon.js +0 -1
- package/icons/tech/nodejs.js +0 -1
- package/icons/tech/nodemon.js +0 -1
- package/icons/tech/nodeos.js +0 -1
- package/icons/tech/nodewebkit.js +0 -1
- package/icons/tech/nomad-icon.js +0 -1
- package/icons/tech/nomad.js +0 -1
- package/icons/tech/notion-icon.js +0 -1
- package/icons/tech/notion.js +0 -1
- package/icons/tech/noysi.js +0 -1
- package/icons/tech/npm-icon.js +0 -1
- package/icons/tech/npm.js +0 -1
- package/icons/tech/nuclide.js +0 -1
- package/icons/tech/nuget.js +0 -1
- package/icons/tech/num-py.js +0 -1
- package/icons/tech/nuxt-icon.js +0 -1
- package/icons/tech/nuxt-js.js +0 -1
- package/icons/tech/nuxt.js +0 -1
- package/icons/tech/nvidia.js +0 -1
- package/icons/tech/nvm.js +0 -1
- package/icons/tech/nx.js +0 -1
- package/icons/tech/oauth.js +0 -1
- package/icons/tech/objective-c.js +0 -1
- package/icons/tech/observablehq.js +0 -1
- package/icons/tech/obsidian-icon.js +0 -1
- package/icons/tech/obsidian.js +0 -1
- package/icons/tech/ocaml.js +0 -1
- package/icons/tech/octodns.js +0 -1
- package/icons/tech/octopus-deploy.js +0 -1
- package/icons/tech/oh-my-zsh.js +0 -1
- package/icons/tech/okta-icon.js +0 -1
- package/icons/tech/okta.js +0 -1
- package/icons/tech/olark.js +0 -1
- package/icons/tech/onesignal.js +0 -1
- package/icons/tech/open-al.js +0 -1
- package/icons/tech/open-api.js +0 -1
- package/icons/tech/open-cl.js +0 -1
- package/icons/tech/open-cv.js +0 -1
- package/icons/tech/open-gl.js +0 -1
- package/icons/tech/open-graph.js +0 -1
- package/icons/tech/open-stack.js +0 -1
- package/icons/tech/open-suse.js +0 -1
- package/icons/tech/open-telemetry.js +0 -1
- package/icons/tech/open-zeppelin-icon.js +0 -1
- package/icons/tech/open-zeppelin.js +0 -1
- package/icons/tech/openai-icon.js +0 -1
- package/icons/tech/openai.js +0 -1
- package/icons/tech/openapi-icon.js +0 -1
- package/icons/tech/opencart.js +0 -1
- package/icons/tech/opencollective.js +0 -1
- package/icons/tech/openframeworks.js +0 -1
- package/icons/tech/openjs-foundation-icon.js +0 -1
- package/icons/tech/openjs-foundation.js +0 -1
- package/icons/tech/openlayers.js +0 -1
- package/icons/tech/opensearch-icon.js +0 -1
- package/icons/tech/opensearch.js +0 -1
- package/icons/tech/openshift.js +0 -1
- package/icons/tech/opensource.js +0 -1
- package/icons/tech/openstack-icon.js +0 -1
- package/icons/tech/opentelemetry-icon.js +0 -1
- package/icons/tech/opera.js +0 -1
- package/icons/tech/opsgenie.js +0 -1
- package/icons/tech/optimizely-icon.js +0 -1
- package/icons/tech/optimizely.js +0 -1
- package/icons/tech/oracle.js +0 -1
- package/icons/tech/oreilly.js +0 -1
- package/icons/tech/origami.js +0 -1
- package/icons/tech/origin.js +0 -1
- package/icons/tech/oshw.js +0 -1
- package/icons/tech/osquery.js +0 -1
- package/icons/tech/overloop-icon.js +0 -1
- package/icons/tech/overloop.js +0 -1
- package/icons/tech/p5js.js +0 -1
- package/icons/tech/packer.js +0 -1
- package/icons/tech/pagekit.js +0 -1
- package/icons/tech/pagekite.js +0 -1
- package/icons/tech/pagerduty-icon.js +0 -1
- package/icons/tech/pagerduty.js +0 -1
- package/icons/tech/panda.js +0 -1
- package/icons/tech/pandacss-icon.js +0 -1
- package/icons/tech/pandacss.js +0 -1
- package/icons/tech/pandas-icon.js +0 -1
- package/icons/tech/pandas.js +0 -1
- package/icons/tech/parcel-icon.js +0 -1
- package/icons/tech/parcel.js +0 -1
- package/icons/tech/parse.js +0 -1
- package/icons/tech/parsehub.js +0 -1
- package/icons/tech/partytown-icon.js +0 -1
- package/icons/tech/partytown.js +0 -1
- package/icons/tech/passbolt-icon.js +0 -1
- package/icons/tech/passbolt.js +0 -1
- package/icons/tech/passport.js +0 -1
- package/icons/tech/patreon.js +0 -1
- package/icons/tech/payload.js +0 -1
- package/icons/tech/paypal.js +0 -1
- package/icons/tech/peer5.js +0 -1
- package/icons/tech/pepperoni.js +0 -1
- package/icons/tech/percona.js +0 -1
- package/icons/tech/percy-icon.js +0 -1
- package/icons/tech/percy.js +0 -1
- package/icons/tech/perf-rocks.js +0 -1
- package/icons/tech/perl.js +0 -1
- package/icons/tech/perplexity-icon.js +0 -1
- package/icons/tech/perplexity.js +0 -1
- package/icons/tech/pf-sense.js +0 -1
- package/icons/tech/phalcon.js +0 -1
- package/icons/tech/phoenix-framework.js +0 -1
- package/icons/tech/phoenix.js +0 -1
- package/icons/tech/photon-engine.js +0 -1
- package/icons/tech/php-alt.js +0 -1
- package/icons/tech/php-storm.js +0 -1
- package/icons/tech/php.js +0 -1
- package/icons/tech/pinecone-icon.js +0 -1
- package/icons/tech/pinecone.js +0 -1
- package/icons/tech/pinia.js +0 -1
- package/icons/tech/pinterest.js +0 -1
- package/icons/tech/pipedream.js +0 -1
- package/icons/tech/pipedrive.js +0 -1
- package/icons/tech/pipefy.js +0 -1
- package/icons/tech/pivotal-tracker.js +0 -1
- package/icons/tech/pixijs.js +0 -1
- package/icons/tech/pkg.js +0 -1
- package/icons/tech/planetscale.js +0 -1
- package/icons/tech/planless-icon.js +0 -1
- package/icons/tech/planless.js +0 -1
- package/icons/tech/plasmic.js +0 -1
- package/icons/tech/plastic-scm.js +0 -1
- package/icons/tech/platformio.js +0 -1
- package/icons/tech/play.js +0 -1
- package/icons/tech/playwright.js +0 -1
- package/icons/tech/playwrite.js +0 -1
- package/icons/tech/ploty.js +0 -1
- package/icons/tech/pluralsight-icon.js +0 -1
- package/icons/tech/pluralsight.js +0 -1
- package/icons/tech/pm2-icon.js +0 -1
- package/icons/tech/pm2.js +0 -1
- package/icons/tech/pnpm.js +0 -1
- package/icons/tech/pocket-base.js +0 -1
- package/icons/tech/podman.js +0 -1
- package/icons/tech/poeditor.js +0 -1
- package/icons/tech/polygon.js +0 -1
- package/icons/tech/polymer.js +0 -1
- package/icons/tech/portainer.js +0 -1
- package/icons/tech/postcss.js +0 -1
- package/icons/tech/postgraphile.js +0 -1
- package/icons/tech/postgresql.js +0 -1
- package/icons/tech/posthog-icon.js +0 -1
- package/icons/tech/posthog.js +0 -1
- package/icons/tech/postman-icon.js +0 -1
- package/icons/tech/postman.js +0 -1
- package/icons/tech/pouchdb.js +0 -1
- package/icons/tech/powershell.js +0 -1
- package/icons/tech/preact.js +0 -1
- package/icons/tech/precursor.js +0 -1
- package/icons/tech/prerender-icon.js +0 -1
- package/icons/tech/prerender.js +0 -1
- package/icons/tech/prestashop-icon.js +0 -1
- package/icons/tech/prestashop.js +0 -1
- package/icons/tech/presto-icon.js +0 -1
- package/icons/tech/presto.js +0 -1
- package/icons/tech/prettier.js +0 -1
- package/icons/tech/prisma.js +0 -1
- package/icons/tech/prismic-icon.js +0 -1
- package/icons/tech/prismic.js +0 -1
- package/icons/tech/processing.js +0 -1
- package/icons/tech/processwire-icon.js +0 -1
- package/icons/tech/processwire.js +0 -1
- package/icons/tech/productboard-icon.js +0 -1
- package/icons/tech/productboard.js +0 -1
- package/icons/tech/producthunt.js +0 -1
- package/icons/tech/progress.js +0 -1
- package/icons/tech/prometheus.js +0 -1
- package/icons/tech/promises.js +0 -1
- package/icons/tech/proofy.js +0 -1
- package/icons/tech/protoio.js +0 -1
- package/icons/tech/protonet.js +0 -1
- package/icons/tech/protractor.js +0 -1
- package/icons/tech/prott.js +0 -1
- package/icons/tech/pug.js +0 -1
- package/icons/tech/pulumi-icon.js +0 -1
- package/icons/tech/pulumi.js +0 -1
- package/icons/tech/pumpkindb.js +0 -1
- package/icons/tech/puppet-icon.js +0 -1
- package/icons/tech/puppet.js +0 -1
- package/icons/tech/puppeteer.js +0 -1
- package/icons/tech/purescript-icon.js +0 -1
- package/icons/tech/purescript.js +0 -1
- package/icons/tech/pushbullet.js +0 -1
- package/icons/tech/pusher-icon.js +0 -1
- package/icons/tech/pusher.js +0 -1
- package/icons/tech/putty.js +0 -1
- package/icons/tech/pwa.js +0 -1
- package/icons/tech/pycharm.js +0 -1
- package/icons/tech/pypi.js +0 -1
- package/icons/tech/pyscript.js +0 -1
- package/icons/tech/pytest.js +0 -1
- package/icons/tech/python-poetry.js +0 -1
- package/icons/tech/python.js +0 -1
- package/icons/tech/pytorch-icon.js +0 -1
- package/icons/tech/pytorch.js +0 -1
- package/icons/tech/pyup.js +0 -1
- package/icons/tech/q.js +0 -1
- package/icons/tech/qdrant-icon.js +0 -1
- package/icons/tech/qdrant.js +0 -1
- package/icons/tech/qlik.js +0 -1
- package/icons/tech/qodana.js +0 -1
- package/icons/tech/qt.js +0 -1
- package/icons/tech/qualcomm.js +0 -1
- package/icons/tech/quarkus-icon.js +0 -1
- package/icons/tech/quarkus.js +0 -1
- package/icons/tech/quasar.js +0 -1
- package/icons/tech/quay.js +0 -1
- package/icons/tech/quobyte.js +0 -1
- package/icons/tech/quora.js +0 -1
- package/icons/tech/qwik-icon.js +0 -1
- package/icons/tech/qwik.js +0 -1
- package/icons/tech/r-lang.js +0 -1
- package/icons/tech/r.js +0 -1
- package/icons/tech/rabbitmq-icon.js +0 -1
- package/icons/tech/rabbitmq.js +0 -1
- package/icons/tech/rackspace-icon.js +0 -1
- package/icons/tech/rackspace.js +0 -1
- package/icons/tech/rails.js +0 -1
- package/icons/tech/ramda.js +0 -1
- package/icons/tech/raml.js +0 -1
- package/icons/tech/rancher-icon.js +0 -1
- package/icons/tech/rancher.js +0 -1
- package/icons/tech/raphael.js +0 -1
- package/icons/tech/raspberry-pi.js +0 -1
- package/icons/tech/rax.js +0 -1
- package/icons/tech/reach.js +0 -1
- package/icons/tech/react-bootstrap.js +0 -1
- package/icons/tech/react-query-icon.js +0 -1
- package/icons/tech/react-query.js +0 -1
- package/icons/tech/react-router.js +0 -1
- package/icons/tech/react-spring.js +0 -1
- package/icons/tech/react-styleguidist.js +0 -1
- package/icons/tech/react.js +0 -1
- package/icons/tech/reactivex.js +0 -1
- package/icons/tech/realm.js +0 -1
- package/icons/tech/reapp.js +0 -1
- package/icons/tech/reasonml-icon.js +0 -1
- package/icons/tech/reasonml.js +0 -1
- package/icons/tech/recaptcha.js +0 -1
- package/icons/tech/recoil-icon.js +0 -1
- package/icons/tech/recoil.js +0 -1
- package/icons/tech/red-cube-s-epic-compiler-thingy-programming-re-ct.js +0 -1
- package/icons/tech/reddit-icon.js +0 -1
- package/icons/tech/reddit.js +0 -1
- package/icons/tech/redhat-icon.js +0 -1
- package/icons/tech/redhat.js +0 -1
- package/icons/tech/redis.js +0 -1
- package/icons/tech/redsmin.js +0 -1
- package/icons/tech/redux-observable.js +0 -1
- package/icons/tech/redux-saga.js +0 -1
- package/icons/tech/redux.js +0 -1
- package/icons/tech/redwoodjs.js +0 -1
- package/icons/tech/reindex.js +0 -1
- package/icons/tech/relay.js +0 -1
- package/icons/tech/release.js +0 -1
- package/icons/tech/remix-icon.js +0 -1
- package/icons/tech/remix.js +0 -1
- package/icons/tech/ren-py.js +0 -1
- package/icons/tech/renovatebot.js +0 -1
- package/icons/tech/replay-icon.js +0 -1
- package/icons/tech/replay.js +0 -1
- package/icons/tech/replit-icon.js +0 -1
- package/icons/tech/replit.js +0 -1
- package/icons/tech/require.js +0 -1
- package/icons/tech/rescript-icon.js +0 -1
- package/icons/tech/rescript.js +0 -1
- package/icons/tech/rest-li.js +0 -1
- package/icons/tech/rethinkdb.js +0 -1
- package/icons/tech/retool-icon.js +0 -1
- package/icons/tech/retool.js +0 -1
- package/icons/tech/riak.js +0 -1
- package/icons/tech/rider.js +0 -1
- package/icons/tech/riot.js +0 -1
- package/icons/tech/risingwave-icon.js +0 -1
- package/icons/tech/risingwave.js +0 -1
- package/icons/tech/robot-operating-system-ros.js +0 -1
- package/icons/tech/rocket-chat-icon.js +0 -1
- package/icons/tech/rocket-chat.js +0 -1
- package/icons/tech/rocksdb.js +0 -1
- package/icons/tech/rocky-linux-icon.js +0 -1
- package/icons/tech/rocky-linux.js +0 -1
- package/icons/tech/rollbar-icon.js +0 -1
- package/icons/tech/rollbar.js +0 -1
- package/icons/tech/rollupjs.js +0 -1
- package/icons/tech/rome-icon.js +0 -1
- package/icons/tech/rome.js +0 -1
- package/icons/tech/ros.js +0 -1
- package/icons/tech/rsa.js +0 -1
- package/icons/tech/rsmq.js +0 -1
- package/icons/tech/rspec.js +0 -1
- package/icons/tech/rstudio.js +0 -1
- package/icons/tech/rubocop.js +0 -1
- package/icons/tech/ruby-mine.js +0 -1
- package/icons/tech/ruby-on-rails.js +0 -1
- package/icons/tech/ruby.js +0 -1
- package/icons/tech/rubygems.js +0 -1
- package/icons/tech/rum.js +0 -1
- package/icons/tech/runscope.js +0 -1
- package/icons/tech/rush-icon.js +0 -1
- package/icons/tech/rush.js +0 -1
- package/icons/tech/rust.js +0 -1
- package/icons/tech/rxdb.js +0 -1
- package/icons/tech/safari.js +0 -1
- package/icons/tech/sagui.js +0 -1
- package/icons/tech/sails.js +0 -1
- package/icons/tech/salesforce.js +0 -1
- package/icons/tech/sameroom.js +0 -1
- package/icons/tech/samsung.js +0 -1
- package/icons/tech/sanity.js +0 -1
- package/icons/tech/sap.js +0 -1
- package/icons/tech/sass-doc.js +0 -1
- package/icons/tech/sass.js +0 -1
- package/icons/tech/saucelabs.js +0 -1
- package/icons/tech/scala.js +0 -1
- package/icons/tech/scaledrone.js +0 -1
- package/icons/tech/scalingo.js +0 -1
- package/icons/tech/scribd-icon.js +0 -1
- package/icons/tech/scribd.js +0 -1
- package/icons/tech/sdl.js +0 -1
- package/icons/tech/seaborn-icon.js +0 -1
- package/icons/tech/seaborn.js +0 -1
- package/icons/tech/section-icon.js +0 -1
- package/icons/tech/section.js +0 -1
- package/icons/tech/segment-icon.js +0 -1
- package/icons/tech/segment.js +0 -1
- package/icons/tech/selenium.js +0 -1
- package/icons/tech/sema-software.js +0 -1
- package/icons/tech/semantic-release.js +0 -1
- package/icons/tech/semantic-ui.js +0 -1
- package/icons/tech/semaphoreci.js +0 -1
- package/icons/tech/sencha.js +0 -1
- package/icons/tech/sendgrid-icon.js +0 -1
- package/icons/tech/sendgrid.js +0 -1
- package/icons/tech/seneca.js +0 -1
- package/icons/tech/sensu-icon.js +0 -1
- package/icons/tech/sensu.js +0 -1
- package/icons/tech/sentry-icon.js +0 -1
- package/icons/tech/sentry.js +0 -1
- package/icons/tech/sequelize.js +0 -1
- package/icons/tech/serverless.js +0 -1
- package/icons/tech/sherlock-icon.js +0 -1
- package/icons/tech/sherlock.js +0 -1
- package/icons/tech/shields.js +0 -1
- package/icons/tech/shipit.js +0 -1
- package/icons/tech/shogun.js +0 -1
- package/icons/tech/shopify.js +0 -1
- package/icons/tech/shopware.js +0 -1
- package/icons/tech/shortcut-icon.js +0 -1
- package/icons/tech/shortcut.js +0 -1
- package/icons/tech/sidekiq-icon.js +0 -1
- package/icons/tech/sidekiq.js +0 -1
- package/icons/tech/signal.js +0 -1
- package/icons/tech/sigstore-icon.js +0 -1
- package/icons/tech/sigstore.js +0 -1
- package/icons/tech/sinatra.js +0 -1
- package/icons/tech/singlestore-icon.js +0 -1
- package/icons/tech/singlestore.js +0 -1
- package/icons/tech/sitepoint.js +0 -1
- package/icons/tech/sk-hynix.js +0 -1
- package/icons/tech/skaffolder.js +0 -1
- package/icons/tech/sketch.js +0 -1
- package/icons/tech/skylight.js +0 -1
- package/icons/tech/skype.js +0 -1
- package/icons/tech/slack-icon.js +0 -1
- package/icons/tech/slack.js +0 -1
- package/icons/tech/slides.js +0 -1
- package/icons/tech/slidev.js +0 -1
- package/icons/tech/slim.js +0 -1
- package/icons/tech/smartling.js +0 -1
- package/icons/tech/smashingmagazine.js +0 -1
- package/icons/tech/snap-svg.js +0 -1
- package/icons/tech/snaplet-icon.js +0 -1
- package/icons/tech/snaplet.js +0 -1
- package/icons/tech/snowflake-icon.js +0 -1
- package/icons/tech/snowflake.js +0 -1
- package/icons/tech/snowpack.js +0 -1
- package/icons/tech/snyk.js +0 -1
- package/icons/tech/socket-io.js +0 -1
- package/icons/tech/solarwinds.js +0 -1
- package/icons/tech/solid.js +0 -1
- package/icons/tech/solidity.js +0 -1
- package/icons/tech/solidjs-icon.js +0 -1
- package/icons/tech/solidjs.js +0 -1
- package/icons/tech/solr.js +0 -1
- package/icons/tech/sonarcloud-icon.js +0 -1
- package/icons/tech/sonarcloud.js +0 -1
- package/icons/tech/sonarlint-icon.js +0 -1
- package/icons/tech/sonarlint.js +0 -1
- package/icons/tech/sonarqube.js +0 -1
- package/icons/tech/soundcloud.js +0 -1
- package/icons/tech/sourcegraph.js +0 -1
- package/icons/tech/sourcetree.js +0 -1
- package/icons/tech/spark.js +0 -1
- package/icons/tech/sparkpost.js +0 -1
- package/icons/tech/speakerdeck.js +0 -1
- package/icons/tech/speedcurve.js +0 -1
- package/icons/tech/spidermonkey-icon.js +0 -1
- package/icons/tech/spidermonkey.js +0 -1
- package/icons/tech/spinnaker.js +0 -1
- package/icons/tech/splunk.js +0 -1
- package/icons/tech/spotify-icon.js +0 -1
- package/icons/tech/spotify.js +0 -1
- package/icons/tech/spree.js +0 -1
- package/icons/tech/spring-icon.js +0 -1
- package/icons/tech/spring.js +0 -1
- package/icons/tech/sql-developer.js +0 -1
- package/icons/tech/sqlalchemy.js +0 -1
- package/icons/tech/sqlite.js +0 -1
- package/icons/tech/square.js +0 -1
- package/icons/tech/squarespace.js +0 -1
- package/icons/tech/ssh.js +0 -1
- package/icons/tech/sst-icon.js +0 -1
- package/icons/tech/sst.js +0 -1
- package/icons/tech/stability-ai-icon.js +0 -1
- package/icons/tech/stability-ai.js +0 -1
- package/icons/tech/stackbit-icon.js +0 -1
- package/icons/tech/stackbit.js +0 -1
- package/icons/tech/stackblitz-icon.js +0 -1
- package/icons/tech/stackblitz.js +0 -1
- package/icons/tech/stackoverflow-icon.js +0 -1
- package/icons/tech/stackoverflow.js +0 -1
- package/icons/tech/stackshare.js +0 -1
- package/icons/tech/stata.js +0 -1
- package/icons/tech/stately-icon.js +0 -1
- package/icons/tech/stately.js +0 -1
- package/icons/tech/statuspage.js +0 -1
- package/icons/tech/stdlib-icon.js +0 -1
- package/icons/tech/stdlib.js +0 -1
- package/icons/tech/steam.js +0 -1
- package/icons/tech/stenciljs-icon.js +0 -1
- package/icons/tech/stenciljs.js +0 -1
- package/icons/tech/stetho.js +0 -1
- package/icons/tech/stickermule.js +0 -1
- package/icons/tech/stigg-icon.js +0 -1
- package/icons/tech/stigg.js +0 -1
- package/icons/tech/stimulus-icon.js +0 -1
- package/icons/tech/stimulus.js +0 -1
- package/icons/tech/stitch.js +0 -1
- package/icons/tech/stoplight.js +0 -1
- package/icons/tech/storyblocks-icon.js +0 -1
- package/icons/tech/storyblocks.js +0 -1
- package/icons/tech/storyblok-icon.js +0 -1
- package/icons/tech/storyblok.js +0 -1
- package/icons/tech/storybook-icon.js +0 -1
- package/icons/tech/storybook.js +0 -1
- package/icons/tech/strapi-icon.js +0 -1
- package/icons/tech/strapi.js +0 -1
- package/icons/tech/streamlit.js +0 -1
- package/icons/tech/strider.js +0 -1
- package/icons/tech/stripe.js +0 -1
- package/icons/tech/struts.js +0 -1
- package/icons/tech/styleci.js +0 -1
- package/icons/tech/stylefmt.js +0 -1
- package/icons/tech/stylelint.js +0 -1
- package/icons/tech/stylis.js +0 -1
- package/icons/tech/stylus.js +0 -1
- package/icons/tech/stytch.js +0 -1
- package/icons/tech/sublimetext-icon.js +0 -1
- package/icons/tech/sublimetext.js +0 -1
- package/icons/tech/subversion.js +0 -1
- package/icons/tech/sugarss.js +0 -1
- package/icons/tech/supabase-icon.js +0 -1
- package/icons/tech/supabase.js +0 -1
- package/icons/tech/supertokens-icon.js +0 -1
- package/icons/tech/supertokens.js +0 -1
- package/icons/tech/surge.js +0 -1
- package/icons/tech/surrealdb-icon.js +0 -1
- package/icons/tech/surrealdb.js +0 -1
- package/icons/tech/survicate-icon.js +0 -1
- package/icons/tech/survicate.js +0 -1
- package/icons/tech/suse.js +0 -1
- package/icons/tech/susy.js +0 -1
- package/icons/tech/svelte-icon.js +0 -1
- package/icons/tech/svelte-kit.js +0 -1
- package/icons/tech/svelte.js +0 -1
- package/icons/tech/svg.js +0 -1
- package/icons/tech/svgator.js +0 -1
- package/icons/tech/swagger.js +0 -1
- package/icons/tech/swc.js +0 -1
- package/icons/tech/swift.js +0 -1
- package/icons/tech/swiftype.js +0 -1
- package/icons/tech/swimm.js +0 -1
- package/icons/tech/swr.js +0 -1
- package/icons/tech/symfony.js +0 -1
- package/icons/tech/sysdig-icon.js +0 -1
- package/icons/tech/sysdig.js +0 -1
- package/icons/tech/t3.js +0 -1
- package/icons/tech/tableau-icon.js +0 -1
- package/icons/tech/tableau.js +0 -1
- package/icons/tech/taiga.js +0 -1
- package/icons/tech/tailwindcss-icon.js +0 -1
- package/icons/tech/tailwindcss.js +0 -1
- package/icons/tech/tapcart-icon.js +0 -1
- package/icons/tech/tapcart.js +0 -1
- package/icons/tech/taskade-icon.js +0 -1
- package/icons/tech/taskade.js +0 -1
- package/icons/tech/tastejs.js +0 -1
- package/icons/tech/tauri.js +0 -1
- package/icons/tech/tealium.js +0 -1
- package/icons/tech/teamcity.js +0 -1
- package/icons/tech/teamgrid.js +0 -1
- package/icons/tech/teamwork-icon.js +0 -1
- package/icons/tech/teamwork.js +0 -1
- package/icons/tech/telegram.js +0 -1
- package/icons/tech/tensorflow.js +0 -1
- package/icons/tech/terminal.js +0 -1
- package/icons/tech/terraform-icon.js +0 -1
- package/icons/tech/terraform.js +0 -1
- package/icons/tech/terser-icon.js +0 -1
- package/icons/tech/terser.js +0 -1
- package/icons/tech/testcafe.js +0 -1
- package/icons/tech/testing-library.js +0 -1
- package/icons/tech/testlodge.js +0 -1
- package/icons/tech/tex.js +0 -1
- package/icons/tech/the-algorithms.js +0 -1
- package/icons/tech/threejs.js +0 -1
- package/icons/tech/thymeleaf-icon.js +0 -1
- package/icons/tech/thymeleaf.js +0 -1
- package/icons/tech/tidal-icon.js +0 -1
- package/icons/tech/tidal.js +0 -1
- package/icons/tech/tiktok-icon.js +0 -1
- package/icons/tech/tiktok.js +0 -1
- package/icons/tech/titanium-sdk.js +0 -1
- package/icons/tech/tnw.js +0 -1
- package/icons/tech/todoist-icon.js +0 -1
- package/icons/tech/todoist.js +0 -1
- package/icons/tech/todomvc.js +0 -1
- package/icons/tech/tomcat.js +0 -1
- package/icons/tech/toml.js +0 -1
- package/icons/tech/tor-browser.js +0 -1
- package/icons/tech/tor.js +0 -1
- package/icons/tech/tortoise-git.js +0 -1
- package/icons/tech/tower.js +0 -1
- package/icons/tech/traackr.js +0 -1
- package/icons/tech/trac.js +0 -1
- package/icons/tech/traefik-mesh.js +0 -1
- package/icons/tech/traefik-proxy.js +0 -1
- package/icons/tech/travis-ci-monochrome.js +0 -1
- package/icons/tech/travis-ci.js +0 -1
- package/icons/tech/treasuredata-icon.js +0 -1
- package/icons/tech/treasuredata.js +0 -1
- package/icons/tech/treehouse-icon.js +0 -1
- package/icons/tech/treehouse.js +0 -1
- package/icons/tech/trello.js +0 -1
- package/icons/tech/trpc.js +0 -1
- package/icons/tech/truffle-icon.js +0 -1
- package/icons/tech/truffle.js +0 -1
- package/icons/tech/tsmc.js +0 -1
- package/icons/tech/tsnode.js +0 -1
- package/icons/tech/tsuru.js +0 -1
- package/icons/tech/tumblr-icon.js +0 -1
- package/icons/tech/tumblr.js +0 -1
- package/icons/tech/tunein.js +0 -1
- package/icons/tech/tuple.js +0 -1
- package/icons/tech/turbopack-icon.js +0 -1
- package/icons/tech/turbopack.js +0 -1
- package/icons/tech/turborepo-icon.js +0 -1
- package/icons/tech/turborepo.js +0 -1
- package/icons/tech/turret.js +0 -1
- package/icons/tech/twilio-icon.js +0 -1
- package/icons/tech/twilio.js +0 -1
- package/icons/tech/twitch.js +0 -1
- package/icons/tech/twitter.js +0 -1
- package/icons/tech/typeform-icon.js +0 -1
- package/icons/tech/typeform.js +0 -1
- package/icons/tech/typeorm.js +0 -1
- package/icons/tech/typescript-icon-round.js +0 -1
- package/icons/tech/typescript-icon.js +0 -1
- package/icons/tech/typescript.js +0 -1
- package/icons/tech/typesense-icon.js +0 -1
- package/icons/tech/typesense.js +0 -1
- package/icons/tech/typo3-icon.js +0 -1
- package/icons/tech/typo3.js +0 -1
- package/icons/tech/ubuntu.js +0 -1
- package/icons/tech/udacity-icon.js +0 -1
- package/icons/tech/udacity.js +0 -1
- package/icons/tech/udemy-icon.js +0 -1
- package/icons/tech/udemy.js +0 -1
- package/icons/tech/uikit.js +0 -1
- package/icons/tech/uml.js +0 -1
- package/icons/tech/umu.js +0 -1
- package/icons/tech/unbounce-icon.js +0 -1
- package/icons/tech/unbounce.js +0 -1
- package/icons/tech/undertow.js +0 -1
- package/icons/tech/unionpay.js +0 -1
- package/icons/tech/unitjs.js +0 -1
- package/icons/tech/unito-icon.js +0 -1
- package/icons/tech/unito.js +0 -1
- package/icons/tech/unity.js +0 -1
- package/icons/tech/unix.js +0 -1
- package/icons/tech/unjs.js +0 -1
- package/icons/tech/unocss.js +0 -1
- package/icons/tech/unrealengine-icon.js +0 -1
- package/icons/tech/unrealengine.js +0 -1
- package/icons/tech/upcase.js +0 -1
- package/icons/tech/upstash-icon.js +0 -1
- package/icons/tech/upstash.js +0 -1
- package/icons/tech/upwork.js +0 -1
- package/icons/tech/user-testing-icon.js +0 -1
- package/icons/tech/user-testing.js +0 -1
- package/icons/tech/uservoice-icon.js +0 -1
- package/icons/tech/uservoice.js +0 -1
- package/icons/tech/uwsgi.js +0 -1
- package/icons/tech/v8-ignition.js +0 -1
- package/icons/tech/v8-turbofan.js +0 -1
- package/icons/tech/v8.js +0 -1
- package/icons/tech/vaadin.js +0 -1
- package/icons/tech/vaddy.js +0 -1
- package/icons/tech/vagrant-icon.js +0 -1
- package/icons/tech/vagrant.js +0 -1
- package/icons/tech/vala.js +0 -1
- package/icons/tech/vault-icon.js +0 -1
- package/icons/tech/vault.js +0 -1
- package/icons/tech/vector.js +0 -1
- package/icons/tech/vercel-icon.js +0 -1
- package/icons/tech/vercel.js +0 -1
- package/icons/tech/verdaccio-icon.js +0 -1
- package/icons/tech/verdaccio.js +0 -1
- package/icons/tech/vernemq.js +0 -1
- package/icons/tech/veutify.js +0 -1
- package/icons/tech/vim.js +0 -1
- package/icons/tech/vimeo-icon.js +0 -1
- package/icons/tech/vimeo.js +0 -1
- package/icons/tech/visa.js +0 -1
- package/icons/tech/visaelectron.js +0 -1
- package/icons/tech/visual-studio-code.js +0 -1
- package/icons/tech/visual-studio.js +0 -1
- package/icons/tech/vite.js +0 -1
- package/icons/tech/vitejs.js +0 -1
- package/icons/tech/vitess.js +0 -1
- package/icons/tech/vitest.js +0 -1
- package/icons/tech/vivaldi-icon.js +0 -1
- package/icons/tech/vivaldi.js +0 -1
- package/icons/tech/vlang.js +0 -1
- package/icons/tech/vmware.js +0 -1
- package/icons/tech/void.js +0 -1
- package/icons/tech/volar.js +0 -1
- package/icons/tech/vorejs.js +0 -1
- package/icons/tech/vscode.js +0 -1
- package/icons/tech/vsphere.js +0 -1
- package/icons/tech/vue-storefront.js +0 -1
- package/icons/tech/vue.js +0 -1
- package/icons/tech/vuetifyjs.js +0 -1
- package/icons/tech/vueuse.js +0 -1
- package/icons/tech/vulkan.js +0 -1
- package/icons/tech/vultr-icon.js +0 -1
- package/icons/tech/vultr.js +0 -1
- package/icons/tech/vwo.js +0 -1
- package/icons/tech/vyper.js +0 -1
- package/icons/tech/w3c.js +0 -1
- package/icons/tech/waffle-icon.js +0 -1
- package/icons/tech/waffle.js +0 -1
- package/icons/tech/wagtail.js +0 -1
- package/icons/tech/wakatime.js +0 -1
- package/icons/tech/walkme.js +0 -1
- package/icons/tech/watchman.js +0 -1
- package/icons/tech/waypoint-icon.js +0 -1
- package/icons/tech/waypoint.js +0 -1
- package/icons/tech/wayscript-icon.js +0 -1
- package/icons/tech/wayscript.js +0 -1
- package/icons/tech/wearos.js +0 -1
- package/icons/tech/weave.js +0 -1
- package/icons/tech/web-dev-icon.js +0 -1
- package/icons/tech/web-dev.js +0 -1
- package/icons/tech/web3js.js +0 -1
- package/icons/tech/webassembly.js +0 -1
- package/icons/tech/webcomponents.js +0 -1
- package/icons/tech/webdriverio.js +0 -1
- package/icons/tech/webflow.js +0 -1
- package/icons/tech/webgpu.js +0 -1
- package/icons/tech/webhint-icon.js +0 -1
- package/icons/tech/webhint.js +0 -1
- package/icons/tech/webhooks.js +0 -1
- package/icons/tech/webix-icon.js +0 -1
- package/icons/tech/webix.js +0 -1
- package/icons/tech/webkit.js +0 -1
- package/icons/tech/weblate.js +0 -1
- package/icons/tech/webmin.js +0 -1
- package/icons/tech/webpack.js +0 -1
- package/icons/tech/webplatform.js +0 -1
- package/icons/tech/webrtc.js +0 -1
- package/icons/tech/websocket.js +0 -1
- package/icons/tech/webstorm.js +0 -1
- package/icons/tech/webtorrent.js +0 -1
- package/icons/tech/weebly.js +0 -1
- package/icons/tech/whalar-icon.js +0 -1
- package/icons/tech/whalar.js +0 -1
- package/icons/tech/whatsapp-icon.js +0 -1
- package/icons/tech/whatsapp-monochrome-icon.js +0 -1
- package/icons/tech/whatsapp.js +0 -1
- package/icons/tech/whatwg.js +0 -1
- package/icons/tech/wicket-icon.js +0 -1
- package/icons/tech/wicket.js +0 -1
- package/icons/tech/wifi.js +0 -1
- package/icons/tech/wildfly.js +0 -1
- package/icons/tech/windi-css.js +0 -1
- package/icons/tech/windows11.js +0 -1
- package/icons/tech/windows8.js +0 -1
- package/icons/tech/winglang-icon.js +0 -1
- package/icons/tech/winglang.js +0 -1
- package/icons/tech/wire.js +0 -1
- package/icons/tech/wix.js +0 -1
- package/icons/tech/wmr.js +0 -1
- package/icons/tech/woo-commerce.js +0 -1
- package/icons/tech/woocommerce-icon.js +0 -1
- package/icons/tech/woopra.js +0 -1
- package/icons/tech/wordpress-icon-alt.js +0 -1
- package/icons/tech/wordpress-icon.js +0 -1
- package/icons/tech/wordpress.js +0 -1
- package/icons/tech/workboard.js +0 -1
- package/icons/tech/workos-icon.js +0 -1
- package/icons/tech/workos.js +0 -1
- package/icons/tech/workplace-icon.js +0 -1
- package/icons/tech/workplace.js +0 -1
- package/icons/tech/wpengine.js +0 -1
- package/icons/tech/wufoo.js +0 -1
- package/icons/tech/x.js +0 -1
- package/icons/tech/xamarin.js +0 -1
- package/icons/tech/xampp.js +0 -1
- package/icons/tech/xata-icon.js +0 -1
- package/icons/tech/xata.js +0 -1
- package/icons/tech/xcart.js +0 -1
- package/icons/tech/xcode.js +0 -1
- package/icons/tech/xero.js +0 -1
- package/icons/tech/xml.js +0 -1
- package/icons/tech/xray-for-jira.js +0 -1
- package/icons/tech/xstate.js +0 -1
- package/icons/tech/xtend.js +0 -1
- package/icons/tech/xwiki-icon.js +0 -1
- package/icons/tech/xwiki.js +0 -1
- package/icons/tech/yahoo.js +0 -1
- package/icons/tech/yaml.js +0 -1
- package/icons/tech/yammer.js +0 -1
- package/icons/tech/yandex-ru.js +0 -1
- package/icons/tech/yarn.js +0 -1
- package/icons/tech/ycombinator.js +0 -1
- package/icons/tech/yeoman.js +0 -1
- package/icons/tech/yii-framework.js +0 -1
- package/icons/tech/yii.js +0 -1
- package/icons/tech/youtrack.js +0 -1
- package/icons/tech/youtube-icon.js +0 -1
- package/icons/tech/youtube.js +0 -1
- package/icons/tech/yugabyte-icon.js +0 -1
- package/icons/tech/yugabyte.js +0 -1
- package/icons/tech/yuno-host.js +0 -1
- package/icons/tech/zabbix.js +0 -1
- package/icons/tech/zapier.js +0 -1
- package/icons/tech/zend-framework.js +0 -1
- package/icons/tech/zendesk-icon.js +0 -1
- package/icons/tech/zendesk.js +0 -1
- package/icons/tech/zenhub-icon.js +0 -1
- package/icons/tech/zenhub.js +0 -1
- package/icons/tech/zeplin.js +0 -1
- package/icons/tech/zeroheight-icon.js +0 -1
- package/icons/tech/zeroheight.js +0 -1
- package/icons/tech/zig.js +0 -1
- package/icons/tech/zod.js +0 -1
- package/icons/tech/zoho.js +0 -1
- package/icons/tech/zoom-icon.js +0 -1
- package/icons/tech/zoom.js +0 -1
- package/icons/tech/zorin-os.js +0 -1
- package/icons/tech/zsh.js +0 -1
- package/icons/tech/zube.js +0 -1
- package/icons/tech/zulip-icon.js +0 -1
- package/icons/tech/zulip.js +0 -1
- package/icons/tech/zwave.js +0 -1
- package/react/index.d.ts +0 -5016
- package/react/index.js +0 -54032
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import{s as __toESM}from"./rolldown-runtime.mjs";import{$ as t$15,A as e$3,B as t$13,C as e$9,D as e$1,E as e$5,G as r$1,J as t$4,K as n$2,L as t$11,M as e$11,N as t$6,O as e$8,P as e$2,Q as t$16,R as n$6,S as e$4,T as e$6,U as n$4,V as t$7,W as t$26,X as t$3,Y as r,Z as t$8,_ as t$20,a as n$3,b as t$5,c as t$22,et as t$18,f as t$1,g as n,h as t$23,i as t$14,j as e$12,k as e$7,l as e,m as e$13,n as n$5,o as t$9,p as t$19,q as t$2,r as n$1,s as t$10,t as t$12,tt as t$17,u as t$24,v as t$25,w as e$10,x as t$21,y as t,z as t$27}from"./libs/remeda.mjs";import{i as getLogger,n as getConsoleSink$1,r as getAnsiColorFormatter$1,t as configureSync}from"./libs/@logtape/logtape.mjs";import{n as wrapErrorMessage,t as mergeErrorCause}from"./libs/merge-error-cause.mjs";import{t as safeStringify}from"./libs/safe-stringify.mjs";import{t as defu}from"./libs/defu.mjs";import{n as extname$1}from"./libs/pathe.mjs";import{t as u}from"./libs/tinyrainbow.mjs";import{t as lib}from"./libs/json5.mjs";import{J as v4_default}from"./libs/@hono/mcp.mjs";import{a as LikeC4ProjectConfigOps,c as validateProjectConfig,n as isLikeC4JsonConfig,r as isLikeC4NonJsonConfig,s as LikeC4ProjectJsonConfigSchema,t as isLikeC4Config}from"./filenames.mjs";import{$ as TextEdit$1,A as EMPTY_SCOPE,B as URI,C as DefaultIndexManager,D as DefaultScopeProvider,E as DefaultDocumentValidator,F as DefaultNameProvider,G as CompletionItemKind,H as isOperationCancelled,I as isNamed,J as Position,K as DiagnosticSeverity$1,L as DefaultLangiumDocuments,M as StreamScope,N as DefaultScopeComputation,O as SimpleCache,P as MultiMap$1,Q as SymbolKind,R as DocumentState,S as DefaultWorkspaceManager,T as DefaultAstNodeDescriptionProvider,U as DefaultValueConverter,V as interruptAndCheck,W as ValueConverter,X as SemanticTokenModifiers,Y as Range,Z as SemanticTokenTypes,_ as require_main$2,_t as isAstNode,at as ast_utils_exports,b as inject,c as createDefaultModule,ct as hasContainerOfType,d as AbstractSemanticTokenProvider,dt as isKeyword,et as init_main,f as AstNodeHoverProvider,ft as isRuleCall,g as require_main$1,gt as AbstractAstReflection,h as require_main,ht as stream,it as grammar_utils_exports,j as MapScope,k as WorkspaceCache,l as createDefaultSharedModule,lt as streamAllContents$1,m as DefaultCompletionProvider,mt as EMPTY_STREAM,nt as findNodeForProperty$1,o as AbstractFormatter,ot as getContainerOfType,p as DefaultDocumentHighlightProvider,pt as findCommentNode,q as InsertTextFormat,rt as findNodesForProperty,s as Formatting,st as getDocument$6,tt as findNodeForKeyword$3,u as DefaultWorkspaceSymbolProvider,ut as isCrossReference,v as NodeFileSystemProvider,w as Disposable,x as JSDocDocumentationProvider,y as loadGrammarFromJson,z as UriUtils}from"./libs/langium.mjs";import{t as PQueue}from"./libs/p-queue.mjs";import{t as deepEqual}from"./libs/fast-equals.mjs";import{t as calcSequenceLayout}from"./sequence-view.mjs";import{n as digraph,r as toDot,t as attribute}from"./libs/ts-graphviz.mjs";import{t as require_word_wrap}from"./libs/word-wrap.mjs";import{n as transparentize,r as toHex,t as scale}from"./libs/khroma.mjs";import{t as pLimit}from"./libs/p-limit.mjs";import{t as require_picomatch}from"./libs/picomatch.mjs";import{a as joinRelativeURL,d as withoutLeadingSlash,f as withoutProtocol,i as isRelative,l as withTrailingSlash,n as hasLeadingSlash,o as joinURL,p as withoutTrailingSlash,r as hasProtocol,t as cleanDoubleSlashes,u as withoutBase}from"./libs/ufo.mjs";import{t as prettyMilliseconds}from"./libs/pretty-ms.mjs";import{t as decode}from"./libs/@msgpack/msgpack.mjs";import{t as fromBase64}from"./libs/@smithy/util-base64.mjs";import{t as dedent}from"./libs/strip-indent.mjs";import{t as require_lib}from"./libs/which.mjs";import{LikeC4Model}from"@likec4/core/model";import*as c4 from"@likec4/core";import{Fqn,FqnExpr,FqnRef,GlobalFqn,LikeC4Styles,LinkedList,RelationExpr,RichText,_layout,_stage,_type,ancestorsFqn,applyManualLayout,calcDriftsFromSnapshot,exact,extractStep,invariant,isAncestor,isAndOperator,isAnyOf,isAutoLayoutDirection,isDeploymentNode,isDeploymentView,isDynamicView,isElementView,isGlobalFqn,isNonEmptyArray,isOrOperator,isSameHierarchy,nameFromFqn,nonNullable,nonexhaustive,preferSummary,splitGlobalFqn}from"@likec4/core";import{LikeC4Styles as LikeC4Styles$1,ThemeColors,assignTagColors,computeColorValues}from"@likec4/core/styles";import{Fqn as Fqn$1,FqnExpr as FqnExpr$1,FqnRef as FqnRef$1,_stage as _stage$1,_type as _type$1,exact as exact$1,isAnyOf as isAnyOf$1,isExtendsElementView}from"@likec4/core/types";import{bundleRequire}from"bundle-require";import{formatMessagesSync}from"esbuild";import*as fs$2 from"node:fs/promises";import{unlink,writeFile}from"node:fs/promises";import{basename,dirname,resolve}from"node:path";import{fdir}from"fdir";import{mkdirSync,statSync}from"node:fs";import{DefaultMap,DefaultWeakMap,MultiMap,ancestorsFqn as ancestorsFqn$1,compareFqnHierarchically,compareNatural,compareNaturalHierarchically,delay,hierarchyDistance,ifilter,invariant as invariant$1,isNonEmptyArray as isNonEmptyArray$1,isString,memoizeProp as memoizeProp$1,nameFromFqn as nameFromFqn$1,nonNullable as nonNullable$1,nonexhaustive as nonexhaustive$1,objectHash,onNextTick,parentFqn,promiseNextTick,sortNaturalByFqn,sortParentsFirst,stringHash,toArray}from"@likec4/core/utils";import chokidar from"chokidar";import{BBox as BBox$1,Vector}from"@likec4/core/geometry";import{Graph}from"@likec4/core/utils/graphology";import{Graphviz}from"@hpcc-js/wasm-graphviz";import{computeAdhocView,computeProjectsView,computeView,resolveRulesExtendedViews}from"@likec4/core/compute-view";import spawn,{SubprocessError}from"nano-spawn";import os from"node:os";const parseStack=i=>i.split(`
|
|
2
|
+
`).map(i=>i.trim().replace(`file://`,``));function indent(i,a=2){i=Array.isArray(i)?i:i.split(`
|
|
3
|
+
`);let o=` `.repeat(a);return i.map(i=>`${o}${i}`).join(`
|
|
4
|
+
`)}function loggable(i){if(typeof i==`string`)return i;if(i instanceof Error){let a=mergeErrorCause(i);if(a.stack){let i=parseStack(a.stack);return a.message+`
|
|
5
|
+
`+indent(i.slice(1))}return a.message}return safeStringify(i,{indentation:` `})}function wrapError(i,a){return wrapErrorMessage(i,a)}function gerErrorFromLogRecord(i){let a=Object.entries(i.properties).flatMap(([i,a])=>{if(a instanceof Error){let i=mergeErrorCause(a);return i.stack&&=parseStack(i.stack).join(`
|
|
6
|
+
`),[i]}return i===`error`||i===`err`?[Error(`${a}`)]:[]});return a.length===0?null:a.length===1?a[0]:AggregateError(a)}function appendErrorToMessage(i,a=!1){let o=gerErrorFromLogRecord(i.record);if(o){let s=o.message;return o.stack&&(s=s+`
|
|
7
|
+
`+indent(o.stack.split(`
|
|
8
|
+
`).slice(1))),a&&(s=`${ansiColors.red}${s}${RESET}`),{...i,message:i.message+`
|
|
9
|
+
`+indent(s)}}return i}const levelAbbreviations={trace:`TRACE`,debug:`DEBUG`,info:`INFO `,warning:`WARN `,error:`ERROR`,fatal:`FATAL`},level=i=>levelAbbreviations[i],RESET=`\x1B[0m`,ansiColors={red:`\x1B[31m`};function getAnsiColorFormatter(i){let a=i?.format??(({timestamp:i,level:a,category:o,message:s})=>`${i} ${a} ${o} ${s}`);return getAnsiColorFormatter$1({timestamp:`time`,level,categoryStyle:`bold`,categoryColor:`cyan`,category:`.`,...i,format:i=>a(appendErrorToMessage(i,!0))})}function getConsoleFormatter(i){let a=i?.messageFormatter;return a?i=>{let{properties:o}=i;return o&&Object.keys(o).length>0?[a(i),o]:[a(i)]}:i=>{let{message:a,properties:o}=i;return o&&Object.keys(o).length>0?[...a,o]:a}}function getConsoleSink(i){return getConsoleSink$1({formatter:getConsoleFormatter(),...i})}function getConsoleStderrSink(i){let a=i?.formatter??getConsoleFormatter();return i=>{let o=a(i);if(typeof o==`string`){let i=o.replace(/\r?\n$/,``);console.error(i)}else console.error(...o)}}const logger$17=getLogger(`likec4`);function createLogger(i){return logger$17.getChild(i)}function configureLogger(i){try{let a=i?.sinks??{};configureSync({reset:!0,...i,sinks:{console:getConsoleSink(),...a},loggers:[{category:[`logtape`,`meta`],sinks:[`console`],lowestLevel:`warning`},...i?.loggers??[{category:`likec4`,sinks:[`console`],lowestLevel:`debug`}]]})}catch(i){console.error(i)}}init_main();var LikeC4=class{langium;logger;constructor(i,a=logger$17){this.langium=i,this.logger=a}get workspace(){return this.langium.shared.workspace.WorkspaceManager.workspaceUri.fsPath}get workspaceURI(){return this.langium.shared.workspace.WorkspaceManager.workspaceUri}get workspaceURL(){return this.langium.shared.workspace.WorkspaceManager.workspaceURL}get languageServices(){return this.langium.likec4.likec4.LanguageServices}get projectsManager(){return this.langium.shared.workspace.ProjectsManager}get viewsService(){return this.langium.likec4.likec4.Views}get modelBuilder(){return this.langium.likec4.likec4.ModelBuilder}get LangiumDocuments(){return this.langium.shared.workspace.LangiumDocuments}ensureSingleProject(){let i=this.languageServices.projects();if(i.length>1)throw this.logger.error(`Multiple projects found:
|
|
10
|
+
${i.map(i=>` - ${i.folder.fsPath}`).join(`
|
|
11
|
+
`)}
|
|
12
|
+
|
|
13
|
+
Please specify a project folder`),Error(`Multiple projects found`)}async diagrams(i){let a=this.projectsManager.ensureProjectId(i);return await this.viewsService.diagrams(a)}syncComputedModel(i){let a=this.projectsManager.ensureProjectId(i);return this.modelBuilder.unsafeSyncComputeModel(a)}async computedModel(i){let a=this.projectsManager.ensureProjectId(i);return await this.modelBuilder.computeModel(a)}projects(){return t(this.languageServices.projects(),e(`id`))}async layoutedModel(i){let a=this.projectsManager.ensureProjectId(i);return await this.languageServices.layoutedModel(a)}getErrors(){return this.LangiumDocuments.all.toArray().flatMap(i=>(i.diagnostics??[]).filter(i=>i.severity===DiagnosticSeverity$1.Error).map(({message:a,range:o})=>({message:a,line:o.start.line,range:o,sourceFsPath:i.uri.fsPath})))}hasErrors(){return this.LangiumDocuments.all.some(i=>i.diagnostics?.some(i=>i.severity===DiagnosticSeverity$1.Error)??!1)}printErrors(){let i=!1;for(let a of this.LangiumDocuments.all){let o=a.diagnostics?.filter(i=>i.severity===1);if(o&&o.length>0){i=!0;let s=o.flatMap(i=>{let a=i.range.start.line,o=i.message.split(`
|
|
14
|
+
`);return o.length>10&&(o.length=10,o.push(`...`)),o.map((i,o)=>o===0?` `+u.dim(`Line ${a}: `)+u.red(i):` `.repeat(10)+u.red(i))}).join(`
|
|
15
|
+
`);this.logger.error(`Invalid ${a.uri.fsPath}\n${s}`)}}return i}onModelUpdate(i){let a=this.modelBuilder.onModelParsed(()=>i());return()=>{a.dispose()}}async dispose(){await this.languageServices.dispose()}async[Symbol.asyncDispose](){await this.dispose()}};const validationErrorsToError=i=>Error(`Invalid model:\n${i.getErrors().map(i=>` ${i.sourceFsPath}:${i.line} ${i.message.slice(0,200)}`).join(`
|
|
16
|
+
`)}`);async function handleInitOptions(i,a=logger$17,o){let s=new LikeC4(i,a),c=defu(o,{printErrors:!0,throwIfInvalid:!1});return c.throwIfInvalid===!0&&s.hasErrors()?(await s.dispose(),Promise.reject(validationErrorsToError(s))):(c.printErrors!==!1&&s.hasErrors()&&s.printErrors(),s)}async function createFromSources(i,a,o,s){let c=URI.from({scheme:`virtual`,path:`/workspace`}),l={name:`virtual`,uri:c.toString()},d=i.shared.workspace.WorkspaceManager;d.initialize({capabilities:{},processId:null,rootUri:l.uri,workspaceFolders:[l]}),await d.initializeWorkspace([l]);let f=i.shared.ServiceRegistry.all.flatMap(i=>i.LanguageMetaData.fileExtensions),[p,m]=t$1(t$2(o),([i])=>isLikeC4JsonConfig(i));for(let[o,s]of p){let l=UriUtils.joinPath(c,o);try{await i.shared.workspace.ProjectsManager.registerProject({configUri:l,config:LikeC4ProjectConfigOps.parse(s)})}catch(i){a.error(loggable(i))}}let h=t$3(m,t(([a,o])=>{f.includes(extname$1(a))||(a+=`.c4`);let s=UriUtils.joinPath(c,a);return i.shared.workspace.LangiumDocuments.createDocument(s,o)}));return await i.shared.workspace.DocumentBuilder.build(h,{validation:!0}),handleInitOptions(i,a,s)}const LibIcons=[`likec4lib {`,` icons {`,...[...Object.entries({aws:`activate.alexa-for-business.amplify.apache-mxnet-on-aws.api-gateway.app-config.app-flow.app-mesh.app-runner.app-stream.app-sync.application-auto-scaling.application-composer.application-cost-profiler.application-discovery-service.application-migration-service.artifact.athena.audit-manager.augmented-ai-a2i.aurora.auto-scaling.backint-agent.backup.batch.billing-conductor.bottlerocket.braket.budgets.certificate-manager.chatbot.chime-sdk.chime-voice-connector.chime.clean-rooms.client-vpn.cloud-control-api.cloud-development-kit.cloud-directory.cloud-formation.cloud-front.cloud-hsm.cloud-map.cloud-search.cloud-shell.cloud-trail.cloud-wan.cloud-watch.cloud9.code-artifact.code-build.code-catalyst.code-commit.code-deploy.code-guru.code-pipeline.code-star.code-whisperer.cognito.command-line-interface.comprehend-medical.comprehend.compute-optimizer.config.connect.console-mobile-application.control-tower.corretto.cost-and-usage-report.cost-explorer.data-exchange.data-pipeline.data-sync.data-zone.database-migration-service.deep-composer.deep-learning-amis.deep-learning-containers.deep-lens.deep-racer.detective.dev-ops-guru.device-farm.direct-connect.directory-service.distro-for-open-telemetry.document-db.dynamo-db.ec2-auto-scaling.ec2-image-builder.ec2.ecs-anywhere.efs.eks-anywhere.eks-cloud.eks-distro.elasti-cache.elastic-beanstalk.elastic-block-store.elastic-container-registry.elastic-container-service.elastic-disaster-recovery.elastic-fabric-adapter.elastic-inference.elastic-kubernetes-service.elastic-load-balancing.elastic-transcoder.elemental-appliances-software.elemental-conductor.elemental-delta.elemental-link.elemental-live.elemental-media-connect.elemental-media-convert.elemental-media-live.elemental-media-package.elemental-media-store.elemental-media-tailor.elemental-server.emr.event-bridge.express-workflows.fargate.fault-injection-simulator.file-cache.fin-space.firewall-manager.forecast.fraud-detector.free-rtos.fsx-for-lustre.fsx-for-net-app-ontap.fsx-for-open-zfs.fsx-for-wfs.fsx.game-kit.game-lift.game-sparks.genomics-cli.global-accelerator.glue-data-brew.glue-elastic-views.glue.ground-station.guard-duty.health-lake.honeycode.iam-identity-center.identity-and-access-management.inspector.interactive-video-service.io-t-1-click.io-t-analytics.io-t-button.io-t-core.io-t-device-defender.io-t-device-management.io-t-edu-kit.io-t-events.io-t-express-link.io-t-fleet-wise.io-t-greengrass.io-t-robo-runner.io-t-site-wise.io-t-things-graph.io-t-twin-maker.iq.kendra.key-management-service.keyspaces.kinesis-data-analytics.kinesis-data-streams.kinesis-firehose.kinesis-video-streams.kinesis.lake-formation.lambda.launch-wizard.lex.license-manager.lightsail.local-zones.location-service.lookout-for-equipment.lookout-for-metrics.lookout-for-vision.lumberyard.macie.mainframe-modernization.managed-blockchain.managed-grafana.managed-service-for-prometheus.managed-services.managed-streaming-for-apache-kafka.managed-workflows-for-apache-airflow.management-console.marketplace-dark.marketplace-light.memory-db-for-redis.migration-evaluator.migration-hub.monitron.mq.neptune.network-firewall.neuron.nice-dcv.nice-engin-frame.nimble-studio.nitro-enclaves.omics.open-3d-engine.open-search-service.ops-works.organizations.outposts-family.outposts-rack.outposts-servers.panorama.parallel-cluster.personal-health-dashboard.personalize.pinpoint-apis.pinpoint.polly.private-5g.private-certificate-authority.private-link.professional-services.proton.quantum-ledger-database.quick-sight.rds-on-vmware.rds.re-post.red-hat-open-shift-service-on-aws.redshift.rekognition.reserved-instance-reporting.resilience-hub.resource-access-manager.resource-explorer.robo-maker.route-53.s3-on-outposts.sage-maker-ground-truth.sage-maker-studio-lab.sage-maker.savings-plans.secrets-manager.security-hub.security-lake.server-migration-service.serverless-application-repository.service-catalog.service-management-connector.shield.signer.sim-space-weaver.simple-email-service.simple-notification-service.simple-queue-service.simple-storage-service-glacier.simple-storage-service.site-to-site-vpn.snowball-edge.snowball.snowcone.snowmobile.step-functions.storage-gateway.sumerian.supply-chain.support.systems-manager.tensor-flow-on-aws.textract.thinkbox-deadline.thinkbox-frost.thinkbox-krakatoa.thinkbox-sequoia.thinkbox-stoke.thinkbox-xmesh.timestream.tools-and-sdks.torch-serve.training-certification.transcribe.transfer-family.transit-gateway.translate.trusted-advisor.verified-access.verified-permissions.virtual-private-cloud.vmware-cloud-on-aws.vpc-lattice.waf.wavelength.well-architected-tool.wickr.work-docs-sdk.work-docs.work-link.work-mail.work-spaces-family.x-ray`.split(`.`),azure:`abs-member.active-directory-connect-health.activity-log.administrative-units.advisor.ai-at-edge.ai-studio.aks-automatic.aks-istio.alerts.all-resources.analysis-services.anomaly-detector.api-center.api-connections.api-management-services.api-proxy.app-compliance-automation.app-configuration.app-registrations.app-service-certificates.app-service-domains.app-service-environments.app-service-plans.app-services.app-space-component.app-space.applens.application-gateway-containers.application-gateways.application-group.application-insights.application-security-groups.aquila.arc-data-services.arc-kubernetes.arc-machines.arc-postgre-sql.arc-sql-managed-instance.arc-sql-server.atm-multistack.auto-scale.automanaged-vm.automation-accounts.availability-sets.avs-vm.azure-a.azure-ad-b2c.azure-api-for-fhir.azure-applied-ai-services.azure-arc.azure-attestation.azure-backup-center.azure-blockchain-service.azure-center-for-sap.azure-chaos-studio.azure-cloud-shell.azure-communication-services.azure-communications-gateway.azure-compute-galleries.azure-consumption-commitment.azure-cosmos-db.azure-data-catalog.azure-data-explorer-clusters.azure-database-maria-db-server.azure-database-migration-services.azure-database-my-sql-server.azure-database-postgre-sql-server-group.azure-database-postgre-sql-server.azure-databox-gateway.azure-databricks.azure-deployment-environments.azure-dev-ops.azure-dev-tunnels.azure-edge-hardware-center.azure-experimentation-studio.azure-fileshares.azure-firewall-manager.azure-firewall-policy.azure-hcp-cache.azure-hpc-workbenches.azure-hybrid-center.azure-information-protection.azure-io-t-operations.azure-lighthouse.azure-load-testing.azure-managed-grafana.azure-managed-redis.azure-maps-accounts.azure-media-service.azure-migrate.azure-monitor-dashboard.azure-monitor-pipeline.azure-monitors-for-sap-solutions.azure-net-app-files.azure-network-function-manager-functions.azure-network-function-manager.azure-object-understanding.azure-open-ai.azure-operator-5g-core.azure-operator-insights.azure-operator-nexus.azure-operator-service-manager.azure-orbital.azure-programmable-connectivity.azure-purview-accounts.azure-quotas.azure-red-hat-open-shift.azure-sentinel.azure-service-bus.azure-sphere.azure-spring-apps.azure-sql-edge.azure-sql-server-stretch-databases.azure-sql-vm.azure-sql.azure-stack-edge.azure-stack-hci-sizer.azure-stack.azure-storage-mover.azure-support-center-blue.azure-sustainability.azure-synapse-analytics.azure-token-service.azure-video-indexer.azure-virtual-desktop.azure-vmware-solution.azure-workbooks.azurite.backlog.backup-vault.bare-metal-infrastructure.bastions.batch-accounts.batch-ai.biz-talk.blob-block.blob-page.blockchain-applications.blueprints.bonsai.bot-services.branch.breeze.browser.bug.builds.business-process-tracking.cache-redis.cache.capacity-reservation-groups.capacity.cdn-profiles.central-service-instance-for-sap.ceres.change-analysis.client-apps.cloud-services-classic.cloud-services-extended-support.cloud-test.code-optimization.code.cognitive-search.cognitive-services-decisions.cognitive-services.collaborative-service.commit.community-images.compliance-center.compliance.compute-fleet.computer-vision.conditional-access.confidential-ledgers.connected-cache.connected-vehicle-platform.connections.consortium.container-apps-environments.container-instances.container-registries.container-services-deprecated.content-moderators.content-safety.controls-horizontal.controls.cost-alerts.cost-analysis.cost-budgets.cost-export.cost-management-and-billing.cost-management.counter.cubes.custom-ip-prefix.custom-vision.customer-lockbox-for-microsoft-azure.dashboard-hub.dashboard.data-box.data-collection-rules.data-factories.data-lake-analytics.data-lake-storage-gen1.data-lake-store-gen1.data-share-invitations.data-shares.data-virtualization.database-instance-for-sap.ddo-s-protection-plans.dedicated-hsm.defender-cm-local-manager.defender-dcs-controller.defender-distributer-control-system.defender-engineering-station.defender-external-management.defender-freezer-monitor.defender-historian.defender-hmi.defender-industrial-packaging-system.defender-industrial-printer.defender-industrial-robot.defender-industrial-scale-system.defender-marquee.defender-meter.defender-plc.defender-pneumatic-device.defender-programable-board.defender-relay.defender-robot-controller.defender-rtu.defender-sensor.defender-slot.defender-web-guiding-system.detonation.dev-console.dev-ops-starter.dev-test-labs.device-compliance.device-configuration.device-enrollment.device-provisioning-services.device-security-apple.device-security-google.device-security-windows.device-update-io-t-hub.devices.diagnostics-settings.digital-twins.disk-encryption-sets.disk-pool.disks-classic.disks-snapshots.disks.dns-multistack.dns-private-resolver.dns-security-policy.dns-zones.download.e-books.edge-actions.edge-management.edge-storage-accelerator.education.elastic-job-agents.elastic-san.endpoint-analytics.engage-center-connect.enterprise-applications.entra-connect-health.entra-connect-sync.entra-connect.entra-domain-services.entra-global-secure-access.entra-id-protection.entra-identity-custom-roles.entra-identity-licenses.entra-identity-risky-signins.entra-identity-risky-users.entra-identity-roles-and-administrators.entra-internet-access.entra-managed-identities.entra-private-access.entra-privleged-identity-management.entra-verified-id.error.event-grid-domains.event-grid-subscriptions.event-grid-topics.event-hub-clusters.event-hubs.exchange-access.exchange-on-premises-access.express-route-circuits.express-route-direct.express-route-traffic-collector.extended-security-updates.extensions.external-id-modified.external-id.external-identities.face-apis.feature-previews.fhir-service.fiji.file.files.firewalls.folder-blank.folder-website.form-recognizers.frd-qa.free-services.front-door-and-cdn-profiles.ftp.function-apps.gear.genomics-accounts.genomics.globe-error.globe-success.globe-warning.groups.guide.hd-insight-clusters.hdi-aks-cluster.heart.help-and-support.host-groups.host-pools.hosts.hybrid-connectivity-hub.ic-m-troubleshooting.identity-governance.identity-multi-factor-authentication.identity-secure-score.image-definitions.image-templates.image-versions.image.images.immersive-readers.import-export-jobs.industrial-io-t.information.infrastructure-backup.input-output.instance-pools.integration-accounts.integration-environments.integration-service-environments.internet-analyzer-profiles.intune-app-protection.intune-for-education.intune-trends.intune.io-t-central-applications.io-t-edge.io-t-hub.ip-address-manager.ip-groups.journey-hub.key-vaults.keys.kubernetes-fleet-manager.kubernetes-services.lab-accounts.lab-services.landing-zone.language-understanding.language.launch-portal.learn.load-balancer-hub.load-balancers.load-test.load-testing.local-network-gateways.location.log-analytics-query-pack.log-analytics-workspaces.log-streaming.logic-apps-custom-connector.logic-apps-template.logic-apps.machine-learning-studio-classic-web-services.machine-learning-studio-web-service-plans.machine-learning-studio-workspaces.machine-learning.machines-azure-arc.maintenance-configuration.managed-applications-center.managed-database.managed-desktop.managed-dev-ops-pools.managed-file-shares.managed-identities.managed-instance-apache-cassandra.managed-service-fabric.management-groups.management-portal.marketplace-management.marketplace.med-tech-service.media-file.media.mesh-applications.metrics-advisor.metrics.microsoft-defender-easm.microsoft-defender-for-cloud.microsoft-defender-for-io-t.microsoft-dev-box.mindaro.mission-landing-zone.mobile-engagement.mobile-networks.mobile.modular-data-center.module.monitor-health-models.monitor.multi-tenancy.multifactor-authentication.my-customers.nat.network-foundation-hub.network-interfaces.network-managers.network-security-groups.network-security-hub.network-security-perimeters.network-watcher.notification-hub-namespaces.notification-hubs.offers.on-premises-data-gateways.open-supply-chain-platform.operation-log-classic.oracle-database.os-images-classic.osconfig.outbound-connection.partner-namespace.partner-registration.partner-topic.peering-service.peerings.personalizers.planetary-computer-pro.plans.policy.power-bi-embedded.power-platform.power-up.power.powershell.preview-features.private-endpoints.private-link-service.private-link-services.private-link.process-explorer.production-ready-database.promethus.proximity-placement-groups.public-ip-addresses-classic.public-ip-addresses.public-ip-prefixes.qn-a-makers.quickstart-center.recent.recovery-services-vaults.region-management.relays.remote-rendering.reservations.reserved-capacity.reserved-ip-addresses-classic.resource-explorer.resource-graph-explorer.resource-group-list.resource-groups.resource-guard.resource-linked.resource-management-private-link.resource-mover.resources-provider.restore-points-collections.restore-points.route-filters.route-tables.rtos.savings-plans.scheduler-job-collections.scheduler.scvmm-management-servers.search-grid.search.security-baselines.security.send-grid-accounts.server-farm.serverless-search.service-catalog-mad.service-endpoint-policies.service-fabric-clusters.service-group-relationships.service-groups.service-health.service-providers.shared-image-galleries.signal-r.software-as-a-service.software-updates.solutions.sonic-dash.spatial-anchor-accounts.speech-services.spot-vm.spot-vmss.sql-data-warehouses.sql-database-fleet-manager.sql-database.sql-elastic-pools.sql-managed-instance.sql-server-registries.sql-server.ssd.ssh-keys.ssis-lift-and-shift-ir.stack-hci-premium.static-apps.stor-simple-data-managers.stor-simple-device-managers.storage-accounts-classic.storage-accounts.storage-actions.storage-azure-files.storage-container.storage-explorer.storage-functions.storage-hubs.storage-queue.storage-sync-services.stream-analytics-jobs.subnet.subscriptions.system-topic.table.tag.tags.targets-management.template-specs.templates.tenant-properties.tenant-status.test-base.tfs-vc-repository.time-series-data-sets.time-series-insights-access-policies.time-series-insights-environments.time-series-insights-event-sources.toolbox.toolchain-orchestrator.traffic-manager-profiles.translator-text.troubleshoot.universal-print.update-management-center.updates.user-privacy.user-settings.user-subscriptions.users.verifiable-credentials.verification-as-a-service.versions.video-analyzers.virtual-clusters.virtual-enclaves.virtual-instance-for-sap.virtual-machine.virtual-machines-classic.virtual-network-gateways.virtual-networks-classic.virtual-networks.virtual-router.virtual-visits-builder.virtual-wan-hub.virtual-wans.vm-app-definitions.vm-app-versions.vm-image-version.vm-images-classic.vm-scale-sets.vpnclient-windows.wac-installer.wac.web-app-database.web-application-firewall-policies-waf.web-jobs.web-slots.web-test.website-power.website-staging.windows-notification-services.windows10-core-services.workbooks.worker-container-app.workflow.workload-orchestration.workspace-gateway.workspaces`.split(`.`),gcp:`access-context-manager.administration.advanced-agent-modeling.advanced-solutions-lab.agent-assist.ai-hub.ai-platform-unified.ai-platform.analytics-hub.anthos-config-management.anthos-service-mesh.anthos.api-analytics.api-monetization.api.apigee-api-platform.apigee-sense.app-engine.artifact-registry.asset-inventory.assured-workloads.auto-ml-natural-language.auto-ml-tables.auto-ml-translation.auto-ml-video-intelligence.auto-ml-vision.auto-ml.bare-metal-solutions.batch.beyondcorp.big-query.bigtable.billing.binary-authorization.catalog.certificate-authority-service.certificate-manager.cloud-api-gateway.cloud-apis.cloud-armor.cloud-asset-inventory.cloud-audit-logs.cloud-build.cloud-cdn.cloud-code.cloud-composer.cloud-data-fusion.cloud-deploy.cloud-deployment-manager.cloud-dns.cloud-domains.cloud-ekm.cloud-endpoints.cloud-external-ip-addresses.cloud-firewall-rules.cloud-for-marketing.cloud-functions.cloud-generic.cloud-gpu.cloud-healthcare-api.cloud-healthcare-marketplace.cloud-hsm.cloud-ids.cloud-inference-api.cloud-interconnect.cloud-jobs-api.cloud-load-balancing.cloud-logging.cloud-media-edge.cloud-monitoring.cloud-nat.cloud-natural-language-api.cloud-network.cloud-ops.cloud-optimization-ai-fleet-routing-api.cloud-optimization-ai.cloud-router.cloud-routes.cloud-run-for-anthos.cloud-run.cloud-scheduler.cloud-security-scanner.cloud-shell.cloud-spanner.cloud-sql.cloud-storage.cloud-tasks.cloud-test-lab.cloud-tpu.cloud-translation-api.cloud-vision-api.cloud-vpn.compute-engine.configuration-management.connectivity-test.connectors.contact-center-ai.container-optimized-os.container-registry.data-catalog.data-labeling.data-layers.data-loss-prevention-api.data-qn-a.data-studio.data-transfer.database-migration-service.dataflow.datalab.dataplex.datapol.dataprep.dataproc-metastore.dataproc.datashare.datastore.datastream.debugger.developer-portal.dialogflow-cx.dialogflow-insights.dialogflow.document-ai.early-access-center.error-reporting.eventarc.filestore.financial-services-marketplace.firestore.fleet-engine.free-trial.game-servers.gce-systems-management.genomics.gke-on-prem.google-cloud-marketplace.google-kubernetes-engine.google-maps-platform.healthcare-nlp-api.home.identity-and-access-management.identity-aware-proxy.identity-platform.iot-core.iot-edge.key-access-justifications.key-management-service.kuberun.launcher.local-ssd.looker.managed-service-for-microsoft-active-directory.media-translation-api.memorystore.migrate-for-anthos.migrate-for-compute-engine.my-cloud.network-connectivity-center.network-intelligence-center.network-security.network-tiers.network-topology.onboarding.os-configuration-management.os-inventory-management.os-patch-management.partner-interconnect.partner-portal.performance-dashboard.permissions.persistent-disk.phishing-protection.policy-analyzer.premium-network-tier.private-connectivity.private-service-connect.producer-portal.profiler.project.pub-sub.quantum-engine.quotas.real-world-insights.recommendations-ai.release-notes.retail-api.risk-manager.runtime-config.secret-manager.security-command-center.security-health-advisor.security-key-enforcement.security.service-discovery.speech-to-text.stackdriver.standard-network-tier.stream-suite.support.tensorflow-enterprise.text-to-speech.tools-for-powershell.trace.traffic-director.transfer-appliance.transfer.user-preferences.vertex-ai.video-intelligence-api.virtual-private-cloud.visual-inspection.vmware-engine.web-risk.web-security-scanner.workflows.workload-identity-pool`.split(`.`),tech:`100tb.500px.aarch64.active-campaign-icon.active-campaign.adobe-after-effects.adobe-animate.adobe-dreamweaver.adobe-icon.adobe-illustrator.adobe-incopy.adobe-indesign.adobe-lightroom.adobe-photoshop.adobe-premiere-pro.adobe-premiere.adobe-xd.adobe.adonis-js.adonisjs-icon.adroll.adyen.aerogear.aerospike-icon.aerospike.after-effects.aha.airbnb-icon.airbnb.airbrake.airflow-icon.airflow.airtable.aix.akamai.akka.alfresco.algolia.alpinejs-icon.alpinejs.altair.amazon-chime.amazon-connect.amazon-web-services.amd.amex-digital.amex.amp-icon.amp.ampersand.amplication-icon.amplication.amplitude-icon.amplitude.anaconda.analog.android-icon.android-studio.android-vertical.android.angellist.angular-icon.angular-js.angular.ansible.ant-design.anthropic-icon.anthropic.apache-camel.apache-cloudstack.apache-flink-icon.apache-flink.apache-spark.apache-superset-icon.apache-superset.apache.apiary.apidog-icon.apidog.apl.apollostack.apostrophe.appbaseio-icon.appbaseio.appcelerator.appcenter-icon.appcenter.appcircle-icon.appcircle.appcode.appdynamics-icon.appdynamics.appium.apple-app-store.apple-pay.apple-safari.apple.applitools-icon.applitools.appsignal-icon.appsignal.apptentive.appveyor.appwrite-icon.appwrite.arangodb-icon.arangodb.arc.architect-icon.architect.archlinux.arduino.argo-icon.argo.argocd.arm.armory-icon.armory.asana-icon.asana.asciidoctor.assembla-icon.assembla.astro-icon.astro.astronomer.async-api-icon.async-api.atlassian.atom-icon.atom.atomic-icon.atomic.atomicojs-icon.atomicojs.aurelia.aurora.auth0-icon.auth0.authy.autodesk-maya.autodesk-shot-grid.autoit.autoprefixer.ava.awesome.awk.aws-amplify.aws-api-gateway.aws-app-mesh.aws-appflow.aws-appsync.aws-athena.aws-aurora.aws-backup.aws-batch.aws-certificate-manager.aws-cloudformation.aws-cloudfront.aws-cloudsearch.aws-cloudtrail.aws-cloudwatch.aws-codebuild.aws-codecommit.aws-codedeploy.aws-codepipeline.aws-codestar.aws-cognito.aws-config.aws-documentdb.aws-dynamodb.aws-ec2.aws-ecs.aws-eks.aws-elastic-beanstalk.aws-elasticache.aws-elb.aws-eventbridge.aws-fargate.aws-glacier.aws-glue.aws-iam.aws-keyspaces.aws-kinesis.aws-kms.aws-lake-formation.aws-lambda.aws-lightsail.aws-mq.aws-msk.aws-neptune.aws-open-search.aws-opsworks.aws-quicksight.aws-rds.aws-redshift.aws-route53.aws-s3.aws-secrets-manager.aws-ses.aws-shield.aws-sns.aws-sqs.aws-step-functions.aws-systems-manager.aws-timestream.aws-vpc.aws-waf.aws-xray.aws.axios.azios.azure-devops.azure-sql-database.azure.babel.backbone-icon.backbone-js.backbone.backerkit.baker-street.balena.ballerina.bamboo.basecamp-icon.basecamp.basekit.baseline.bash-icon.bash.batch.beats.behance.bem-2.bem.bigpanda.bing.biomejs-icon.biomejs.bitbar.bitbucket.bitcoin.bitnami.bitrise-icon.bitrise.blender.blitzjs-icon.blitzjs.blocs.blogger.blossom.blueprint.bluesky.bluetooth.booqable-icon.booqable.bootstrap.bosun.botanalytics.bourbon.bower.box.brackets.brainjs.branch-icon.branch.brandfolder-icon.brandfolder.brave.braze-icon.braze.broadcom-icon.broadcom.broccoli.brotli.browserify-icon.browserify.browserling.browserslist.browserstack.browsersync.brunch.bubble-icon.bubble.buck.buddy.buffer.bugherd-icon.bugherd.bugsee.bugsnag.builder-io-icon.builder-io.buildkite-icon.buildkite.bulma.bun.bunny-net-icon.bunny-net.c.cachet.cairo-graphics.cake-php.cakephp-icon.calibre-icon.calibre.campaignmonitor-icon.campaignmonitor.canjs.canva.capacitor.capacitorjs-icon.capacitorjs.capistrano.carbide.cardano-icon.cardano.cassandra.cent-os.centos-icon.certbot.ceylon.chai.chalk.chargebee-icon.chargebee.chartjs.chef.chevereto.chroma.chromatic-icon.chromatic.chrome-web-store.chrome.cinder.circle-ci.cirrus-ci.cirrus.clarity.claude-icon.claude.clio-lang.clion.cljs.clojure-script.clojure.close.cloud9.cloudacademy-icon.cloudacademy.cloudcraft.cloudflare-icon.cloudflare-workers-icon.cloudflare-workers.cloudflare.cloudinary-icon.cloudinary.cloudlinux.cmake.cobalt.cockpit.cocoapods.coda-icon.coda.codacy.code-igniter.code-pen.codeac.codebase.codebeat.codecademy.codeception.codeclimate-icon.codeclimate.codecov-icon.codecov.codefactor-icon.codefactor.codeigniter-icon.codepen-icon.codersrank-icon.codersrank.coderwall.codesandbox-icon.codesandbox.codesee-icon.codesee.codio.codium-icon.codium.coffee-script.commitizen.compass.componentkit.compose-multiplatform.compose.composer.conan-io.concourse.concretecms-icon.concretecms.conda.confluence.consul.contao.contentful.convox-icon.convox.copyleft-pirate.copyleft.corda.cordova.cosmosdb.couchbase.couchdb-icon.couchdb.coursera.coveralls.cpanel.cplusplus.craftcms.crashlytics.crateio.create-react-app.createjs.crossplane-icon.crossplane.crucible.crystal.csharp.css3-official.css3.cssnext.cube-icon.cube.cucumber.curl.customerio-icon.customerio.cyclejs.cypress-icon.cypress.d3.d3js.dailydev-icon.dailydev.daisy-ui-icon.daisy-ui.danfo.dart.dashlane-icon.dashlane.data-grip.data-spell.data-station.database-labs.datadog-icon.datadog.datasette-icon.datasette.datocms-icon.datocms.dbeaver.dbt-icon.dbt.dcos-icon.dcos.debian.delighted-icon.delighted.deno.dependabot.deployhq-icon.deployhq.derby.descript-icon.descript.designernews.deviantart-icon.deviantart.devicon.dgraph-icon.dgraph.dialogflow.digital-ocean-icon.digital-ocean.dimer.dinersclub.discord-icon.discord-js.discord.discourse-icon.discourse.discover.disqus.django-icon.django-rest.django.dockbit.docker-icon.docker.doctrine.docusaurus.dojo-icon.dojo-toolkit.dojo.dolt.dotnet.dovetail-icon.dovetail.dreamhost.dribbble-icon.dribbble.drift.drip.drizzle-icon.drizzle.drone-icon.drone.drools-icon.drools.dropbox.dropmark.dropwizard.dropzone.drupal-icon.drupal.duckduckgo.dynatrace-icon.dynatrace.dyndns.ebanx.eclipse-ceylon.eclipse-icon.eclipse-ide.eclipse-vert-x.eclipse.ecma.edgedb.edgio-icon.edgio.editorconfig.effect-icon.effect.effector.egghead.elasticbeats.elasticpath-icon.elasticpath.elasticsearch.electron.element.elemental-ui.elementary.eleventy-11ty.eleventy.elixir.ello.elm-classic.elm.elo.emacs-classic.emacs.embedded-c.embedly.ember-js.ember-tomster.ember.emmet.enact.engine-yard-icon.engine-yard.envato.envoy-icon.envoy.envoyer.eraser-icon.eraser.erlang.esbuild.esdoc.eslint-old.eslint.eta-icon.eta.etcd.ethereum-color.ethereum.ethers.ethnio.eventbrite-icon.eventbrite.eventsentry.evergreen-icon.evergreen.expo-icon.expo.express.fabric.facebook.faker.falcor.fast-api.fastapi-icon.fastify-icon.fastify.fastlane.fastly.fauna-icon.fauna.feathers.feathersjs.fedora.fetch.ffmpeg-icon.ffmpeg.figma.file-zilla.firebase-icon.firebase.firefox.flannel.flarum.flask.flat-ui.flattr-icon.flattr.fleep.flickr-icon.flickr.flight.floodio.flow.flowxo.floydhub.flutter.flux.fluxxor.fly-icon.fly.fogbugz-icon.fogbugz.fomo-icon.fomo.font-awesome.forestadmin-icon.forestadmin.forever.formkeep.fortran.foundation.foundationdb-icon.foundationdb.framer.framework7-icon.framework7.freebsd.freedcamp-icon.freedcamp.freedomdefined.fresh.frontapp.fsharp.fuchsia.galliumos.game-analytics-icon.game-analytics.ganache-icon.ganache.gatling.gatsby.gazebo.gcc.geekbot.geetest-icon.geetest.gentoo.getyourguide.ghost.giantswarm.gimp.gin.git-icon.git.gitboard.gitbook.github-actions.github-codespaces.github-copilot.github-icon.github-octocat.github.gitkraken.gitlab-icon.gitlab.gitpod.gitter.gitup.glamorous-icon.glamorous.gleam.glimmerjs.glint.glitch-icon.glitch.gnome-icon.gnome.gnu-emacs.gnu-net.gnu.gnupg-icon.gnupg.go-land.go.gocd.godot-engine.godot-icon.godot.gohorse.google-360suite.google-admob.google-ads.google-adsense.google-analytics.google-bard-icon.google-bard.google-calendar.google-cloud-functions.google-cloud-run.google-cloud.google-data-studio.google-developers.google-domains-icon.google-domains.google-drive.google-fit.google-gemini.google-gmail.google-home.google-icon.google-keep.google-maps.google-marketing-platform.google-meet.google-one.google-optimize.google-palm.google-pay.google-photos.google-play-console-icon.google-play-console.google-play-icon.google-play.google-search-console.google-tag-manager.google-workspace.google.gopher.gradio-icon.gradio.gradle.grafana.grails.grammarly-icon.grammarly.graphene.graphql.grav.gravatar-icon.gravatar.graylog-icon.graylog.greensock-icon.greensock.gridsome-icon.gridsome.grommet.groovehq.groovy.grove.growth-book-icon.growth-book.grpc.grunt.gruntjs.gulp.gulpjs.gunicorn.gunjs.gusto.gwt.hack.hacker-one.hadoop.haiku-icon.haiku.haml.hanami.handlebars.hapi.hardhat-icon.hardhat.harness-icon.harness.harvester.hashicorp-icon.hashicorp-vault.hashicorp.hashnode-icon.hashnode.haskell-icon.haskell.hasura-icon.hasura.haxe.haxl.hbase.hcaptcha-icon.hcaptcha.headlessui-icon.headlessui.heap-icon.heap.helm.helpscout-icon.helpscout.hermes.heroku-icon.heroku-redis.heroku.hexo.hhvm.hibernate.highcharts.hipercard.homebrew.hono.hookstate.hootsuite-icon.hootsuite.hosted-graphite.hostgator-icon.hostgator.hotjar-icon.hotjar.houndci.html5-boilerplate.html5.htmx-icon.htmx.httpie-icon.httpie.hubspot.hugging-face-icon.hugging-face.huggy.hugo.humongous.hyper.hyperapp.ibm-spss-statistics.ibm.ie10.ieee.ietf.ifttt.imagemin.imba-icon.imba.immer-icon.immer.immutable.impala.importio-icon.importio.incident-icon.incident.infer.inferno.influxdb-icon.influxdb.ink.inkscape.insomnia.instagram-icon.instagram.intel.intellij-idea.intercom-icon.intercom.internet-computer-icon.internet-computer.internetexplorer.invision-icon.invision.ionic-icon.ionic.ios.iron-icon.iron.itsalive-icon.itsalive.jade.jaeger.jamstack-icon.jamstack.jasmine.java.javascript.jcb.jeet.jekyll.jenkins.jest.jetbrains-icon.jetbrains-space-icon.jetbrains-space.jetbrains.jfrog.jhipster-icon.jhipster.jira-align.jira.joomla.jotai.jquery-mobile.jquery.jruby.jsbin.jsdelivr.jsdom.jsfiddle.json-ld.json-schema-icon.json-schema.json.jspm.jss.juju.jule.julia.junit.jupyter.jwt-icon.jwt.k3os.k3s.kafka-icon.kafka.kaggle.kaios.kallithea.karate.karma.katalon-icon.katalon.kde.keen.kemal.keras.keycdn-icon.keycdn.keydb-icon.keydb.keystonejs.khan-academy-icon.khan-academy.kibana.kickstarter-icon.kickstarter.kinto-icon.kinto.kirby-icon.kirby.knex-js.knex.knockout.koa.kong-icon.kong.kops.koreio.kotlin-icon.kotlin.kraken.krakenjs.ktor-icon.ktor.kubernetes.kustomer.labview.languagetool.laravel.lastfm.lateral-icon.lateral.latex.launchdarkly-icon.launchdarkly.launchrock.leaflet.leankit-icon.leankit.lerna.less-js.less.lets-cloud.letsencrypt.leveldb.lexical-icon.lexical.liftweb.lighthouse.lightstep-icon.lightstep.lighttpd.linear-icon.linear.linkedin-icon.linkedin.linkerd.linode.linux-mint.linux-tux.linux.liquibase.lit-icon.lit.litmus.livewire.llvm.loader.lodash.logentries.logstash.lookback.looker-icon.looker.loom-icon.loom.loopback-icon.loopback.losant.lua.lucene-net.lucene.lumen.mac-os.madge.maestro.mageia.magento.mailchimp-freddie.mailchimp.maildeveloper.mailgun-icon.mailgun.mailjet-icon.mailjet.malinajs.manjaro.mantine-icon.mantine.mapbox-icon.mapbox.maps-me.mapzen-icon.mapzen.mariadb-icon.mariadb.marionette.markdown.marko.marvel.mastercard.mastodon-icon.mastodon.material-ui.materialize.materializecss.matlab.matomo-icon.matomo.matplotlib-icon.matplotlib.matter-icon.matter.mattermost-icon.mattermost.mautic-icon.mautic.maven.mdn.mdx.medium-icon.medium.medusa-icon.medusa.meilisearch.memcached.memgraph.mention.mercurial.mesos.messenger.meta-icon.meta.metabase.metamask-icon.metamask.meteor-icon.meteor-js.meteor.micro-icon.micro-python.micro.microcosm.micron-icon.micron.microsoft-azure.microsoft-edge.microsoft-icon.microsoft-onedrive.microsoft-power-bi.microsoft-sql-server.microsoft-teams.microsoft-windows-icon.microsoft-windows.microsoft.mida-icon.mida.middleman.midjourney.milligram.million-icon.million.milvus-icon.milvus.mindsdb-icon.mindsdb.minitab.mint-lang.mio.miro-icon.miro.mist.mistral-ai-icon.mistral-ai.mithril.mixmax.mixpanel.mlab.mob-x.mocha.mockflow-icon.mockflow.modernizr.modx-icon.modx.moleculer.momentjs.monday-icon.monday.monero.mongodb-icon.mongodb.mongoose-js.mono.moodle.moon.mootools.morpheus-icon.morpheus.mozilla.mparticle-icon.mparticle.mps-icon.mps.ms-dos.msw-icon.msw.multipass.mysql-icon.mysql.naiveui.namecheap.nano.nanonets.nasm.nativescript.nats-icon.nats.neat.neo4j.neon-icon.neon.neovim.nerog.nestjs.net-core.net.netbeans.netflix-icon.netflix.netlify-icon.netlify.network-x.neverinstall-icon.neverinstall.new-relic-icon.new-relic.new4j.nextjs-icon.nextjs.nginx.ngrok.nhibernate.nhost-icon.nhost.nightwatch.nim-lang.nim.nimble.nix.nocodb.nodal.node-sass.nodebots.nodejs-icon-alt.nodejs-icon.nodejs.nodemon.nodeos.nodewebkit.nomad-icon.nomad.notion-icon.notion.noysi.npm-icon.npm.nuclide.nuget.num-py.nuxt-icon.nuxt-js.nuxt.nvidia.nvm.nx.oauth.objective-c.observablehq.obsidian-icon.obsidian.ocaml.octodns.octopus-deploy.oh-my-zsh.okta-icon.okta.olark.onesignal.open-al.open-api.open-cl.open-cv.open-gl.open-graph.open-stack.open-suse.open-telemetry.open-zeppelin-icon.open-zeppelin.openai-icon.openai.openapi-icon.opencart.opencollective.openframeworks.openjs-foundation-icon.openjs-foundation.openlayers.opensearch-icon.opensearch.openshift.opensource.openstack-icon.opentelemetry-icon.opera.opsgenie.optimizely-icon.optimizely.oracle.oreilly.origami.origin.oshw.osquery.overloop-icon.overloop.p5js.packer.pagekit.pagekite.pagerduty-icon.pagerduty.panda.pandacss-icon.pandacss.pandas-icon.pandas.parcel-icon.parcel.parse.parsehub.partytown-icon.partytown.passbolt-icon.passbolt.passport.patreon.payload.paypal.peer5.pepperoni.percona.percy-icon.percy.perf-rocks.perl.perplexity-icon.perplexity.pf-sense.phalcon.phoenix-framework.phoenix.photon-engine.php-alt.php-storm.php.pinecone-icon.pinecone.pinia.pinterest.pipedream.pipedrive.pipefy.pivotal-tracker.pixijs.pkg.planetscale.planless-icon.planless.plasmic.plastic-scm.platformio.play.playwright.playwrite.ploty.pluralsight-icon.pluralsight.pm2-icon.pm2.pnpm.pocket-base.podman.poeditor.polygon.polymer.portainer.postcss.postgraphile.postgresql.posthog-icon.posthog.postman-icon.postman.pouchdb.powershell.preact.precursor.prerender-icon.prerender.prestashop-icon.prestashop.presto-icon.presto.prettier.prisma.prismic-icon.prismic.processing.processwire-icon.processwire.productboard-icon.productboard.producthunt.progress.prometheus.promises.proofy.protoio.protonet.protractor.prott.pug.pulumi-icon.pulumi.pumpkindb.puppet-icon.puppet.puppeteer.purescript-icon.purescript.pushbullet.pusher-icon.pusher.putty.pwa.pycharm.pypi.pyscript.pytest.python-poetry.python.pytorch-icon.pytorch.pyup.q.qdrant-icon.qdrant.qlik.qodana.qt.qualcomm.quarkus-icon.quarkus.quasar.quay.quobyte.quora.qwik-icon.qwik.r-lang.r.rabbitmq-icon.rabbitmq.rackspace-icon.rackspace.rails.ramda.raml.rancher-icon.rancher.raphael.raspberry-pi.rax.reach.react-bootstrap.react-query-icon.react-query.react-router.react-spring.react-styleguidist.react.reactivex.realm.reapp.reasonml-icon.reasonml.recaptcha.recoil-icon.recoil.red-cube-s-epic-compiler-thingy-programming-re-ct.reddit-icon.reddit.redhat-icon.redhat.redis.redsmin.redux-observable.redux-saga.redux.redwoodjs.reindex.relay.release.remix-icon.remix.ren-py.renovatebot.replay-icon.replay.replit-icon.replit.require.rescript-icon.rescript.rest-li.rethinkdb.retool-icon.retool.riak.rider.riot.risingwave-icon.risingwave.robot-operating-system-ros.rocket-chat-icon.rocket-chat.rocksdb.rocky-linux-icon.rocky-linux.rollbar-icon.rollbar.rollupjs.rome-icon.rome.ros.rsa.rsmq.rspec.rstudio.rubocop.ruby-mine.ruby-on-rails.ruby.rubygems.rum.runscope.rush-icon.rush.rust.rxdb.safari.sagui.sails.salesforce.sameroom.samsung.sanity.sap.sass-doc.sass.saucelabs.scala.scaledrone.scalingo.scribd-icon.scribd.sdl.seaborn-icon.seaborn.section-icon.section.segment-icon.segment.selenium.sema-software.semantic-release.semantic-ui.semaphoreci.sencha.sendgrid-icon.sendgrid.seneca.sensu-icon.sensu.sentry-icon.sentry.sequelize.serverless.sherlock-icon.sherlock.shields.shipit.shogun.shopify.shopware.shortcut-icon.shortcut.sidekiq-icon.sidekiq.signal.sigstore-icon.sigstore.sinatra.singlestore-icon.singlestore.sitepoint.sk-hynix.skaffolder.sketch.skylight.skype.slack-icon.slack.slides.slidev.slim.smartling.smashingmagazine.snap-svg.snaplet-icon.snaplet.snowflake-icon.snowflake.snowpack.snyk.socket-io.solarwinds.solid.solidity.solidjs-icon.solidjs.solr.sonarcloud-icon.sonarcloud.sonarlint-icon.sonarlint.sonarqube.soundcloud.sourcegraph.sourcetree.spark.sparkpost.speakerdeck.speedcurve.spidermonkey-icon.spidermonkey.spinnaker.splunk.spotify-icon.spotify.spree.spring-icon.spring.sql-developer.sqlalchemy.sqlite.square.squarespace.ssh.sst-icon.sst.stability-ai-icon.stability-ai.stackbit-icon.stackbit.stackblitz-icon.stackblitz.stackoverflow-icon.stackoverflow.stackshare.stata.stately-icon.stately.statuspage.stdlib-icon.stdlib.steam.stenciljs-icon.stenciljs.stetho.stickermule.stigg-icon.stigg.stimulus-icon.stimulus.stitch.stoplight.storyblocks-icon.storyblocks.storyblok-icon.storyblok.storybook-icon.storybook.strapi-icon.strapi.streamlit.strider.stripe.struts.styleci.stylefmt.stylelint.stylis.stylus.stytch.sublimetext-icon.sublimetext.subversion.sugarss.supabase-icon.supabase.supertokens-icon.supertokens.surge.surrealdb-icon.surrealdb.survicate-icon.survicate.suse.susy.svelte-icon.svelte-kit.svelte.svg.svgator.swagger.swc.swift.swiftype.swimm.swr.symfony.sysdig-icon.sysdig.t3.tableau-icon.tableau.taiga.tailwindcss-icon.tailwindcss.tapcart-icon.tapcart.taskade-icon.taskade.tastejs.tauri.tealium.teamcity.teamgrid.teamwork-icon.teamwork.telegram.tensorflow.terminal.terraform-icon.terraform.terser-icon.terser.testcafe.testing-library.testlodge.tex.the-algorithms.threejs.thymeleaf-icon.thymeleaf.tidal-icon.tidal.tiktok-icon.tiktok.titanium-sdk.tnw.todoist-icon.todoist.todomvc.tomcat.toml.tor-browser.tor.tortoise-git.tower.traackr.trac.traefik-mesh.traefik-proxy.travis-ci-monochrome.travis-ci.treasuredata-icon.treasuredata.treehouse-icon.treehouse.trello.trpc.truffle-icon.truffle.tsmc.tsnode.tsuru.tumblr-icon.tumblr.tunein.tuple.turbopack-icon.turbopack.turborepo-icon.turborepo.turret.twilio-icon.twilio.twitch.twitter.typeform-icon.typeform.typeorm.typescript-icon-round.typescript-icon.typescript.typesense-icon.typesense.typo3-icon.typo3.ubuntu.udacity-icon.udacity.udemy-icon.udemy.uikit.uml.umu.unbounce-icon.unbounce.undertow.unionpay.unitjs.unito-icon.unito.unity.unix.unjs.unocss.unrealengine-icon.unrealengine.upcase.upstash-icon.upstash.upwork.user-testing-icon.user-testing.uservoice-icon.uservoice.uwsgi.v8-ignition.v8-turbofan.v8.vaadin.vaddy.vagrant-icon.vagrant.vala.vault-icon.vault.vector.vercel-icon.vercel.verdaccio-icon.verdaccio.vernemq.veutify.vim.vimeo-icon.vimeo.visa.visaelectron.visual-studio-code.visual-studio.vite.vitejs.vitess.vitest.vivaldi-icon.vivaldi.vlang.vmware.void.volar.vorejs.vscode.vsphere.vue-storefront.vue.vuetifyjs.vueuse.vulkan.vultr-icon.vultr.vwo.vyper.w3c.waffle-icon.waffle.wagtail.wakatime.walkme.watchman.waypoint-icon.waypoint.wayscript-icon.wayscript.wearos.weave.web-dev-icon.web-dev.web3js.webassembly.webcomponents.webdriverio.webflow.webgpu.webhint-icon.webhint.webhooks.webix-icon.webix.webkit.weblate.webmin.webpack.webplatform.webrtc.websocket.webstorm.webtorrent.weebly.whalar-icon.whalar.whatsapp-icon.whatsapp-monochrome-icon.whatsapp.whatwg.wicket-icon.wicket.wifi.wildfly.windi-css.windows11.windows8.winglang-icon.winglang.wire.wix.wmr.woo-commerce.woocommerce-icon.woopra.wordpress-icon-alt.wordpress-icon.wordpress.workboard.workos-icon.workos.workplace-icon.workplace.wpengine.wufoo.x.xamarin.xampp.xata-icon.xata.xcart.xcode.xero.xml.xray-for-jira.xstate.xtend.xwiki-icon.xwiki.yahoo.yaml.yammer.yandex-ru.yarn.ycombinator.yeoman.yii-framework.yii.youtrack.youtube-icon.youtube.yugabyte-icon.yugabyte.yuno-host.zabbix.zapier.zend-framework.zendesk-icon.zendesk.zenhub-icon.zenhub.zeplin.zeroheight-icon.zeroheight.zig.zod.zoho.zoom-icon.zoom.zorin-os.zsh.zube.zulip-icon.zulip.zwave`.split(`.`),bootstrap:`0-circle-fill.0-circle.0-square-fill.0-square.1-circle-fill.1-circle.1-square-fill.1-square.123.2-circle-fill.2-circle.2-square-fill.2-square.3-circle-fill.3-circle.3-square-fill.3-square.4-circle-fill.4-circle.4-square-fill.4-square.5-circle-fill.5-circle.5-square-fill.5-square.6-circle-fill.6-circle.6-square-fill.6-square.7-circle-fill.7-circle.7-square-fill.7-square.8-circle-fill.8-circle.8-square-fill.8-square.9-circle-fill.9-circle.9-square-fill.9-square.activity.airplane-engines-fill.airplane-engines.airplane-fill.airplane.alarm-fill.alarm.alexa.align-bottom.align-center.align-end.align-middle.align-start.align-top.alipay.alphabet-uppercase.alphabet.alt.amazon.amd.android.android2.app-indicator.app.apple.archive-fill.archive.arrow-90deg-down.arrow-90deg-left.arrow-90deg-right.arrow-90deg-up.arrow-bar-down.arrow-bar-left.arrow-bar-right.arrow-bar-up.arrow-clockwise.arrow-counterclockwise.arrow-down-circle-fill.arrow-down-circle.arrow-down-left-circle-fill.arrow-down-left-circle.arrow-down-left-square-fill.arrow-down-left-square.arrow-down-left.arrow-down-right-circle-fill.arrow-down-right-circle.arrow-down-right-square-fill.arrow-down-right-square.arrow-down-right.arrow-down-short.arrow-down-square-fill.arrow-down-square.arrow-down-up.arrow-down.arrow-left-circle-fill.arrow-left-circle.arrow-left-right.arrow-left-short.arrow-left-square-fill.arrow-left-square.arrow-left.arrow-repeat.arrow-return-left.arrow-return-right.arrow-right-circle-fill.arrow-right-circle.arrow-right-short.arrow-right-square-fill.arrow-right-square.arrow-right.arrow-through-heart-fill.arrow-through-heart.arrow-up-circle-fill.arrow-up-circle.arrow-up-left-circle-fill.arrow-up-left-circle.arrow-up-left-square-fill.arrow-up-left-square.arrow-up-left.arrow-up-right-circle-fill.arrow-up-right-circle.arrow-up-right-square-fill.arrow-up-right-square.arrow-up-right.arrow-up-short.arrow-up-square-fill.arrow-up-square.arrow-up.arrows-angle-contract.arrows-angle-expand.arrows-collapse-vertical.arrows-collapse.arrows-expand-vertical.arrows-expand.arrows-fullscreen.arrows-move.arrows-vertical.arrows.aspect-ratio-fill.aspect-ratio.asterisk.at.award-fill.award.back.backpack-fill.backpack.backpack2-fill.backpack2.backpack3-fill.backpack3.backpack4-fill.backpack4.backspace-fill.backspace-reverse-fill.backspace-reverse.backspace.badge-3d-fill.badge-3d.badge-4k-fill.badge-4k.badge-8k-fill.badge-8k.badge-ad-fill.badge-ad.badge-ar-fill.badge-ar.badge-cc-fill.badge-cc.badge-hd-fill.badge-hd.badge-sd-fill.badge-sd.badge-tm-fill.badge-tm.badge-vo-fill.badge-vo.badge-vr-fill.badge-vr.badge-wc-fill.badge-wc.bag-check-fill.bag-check.bag-dash-fill.bag-dash.bag-fill.bag-heart-fill.bag-heart.bag-plus-fill.bag-plus.bag-x-fill.bag-x.bag.balloon-fill.balloon-heart-fill.balloon-heart.balloon.ban-fill.ban.bandaid-fill.bandaid.bank.bank2.bar-chart-fill.bar-chart-line-fill.bar-chart-line.bar-chart-steps.bar-chart.basket-fill.basket.basket2-fill.basket2.basket3-fill.basket3.battery-charging.battery-full.battery-half.battery.behance.bell-fill.bell-slash-fill.bell-slash.bell.bezier.bezier2.bicycle.bing.binoculars-fill.binoculars.blockquote-left.blockquote-right.bluetooth.body-text.book-fill.book-half.book.bookmark-check-fill.bookmark-check.bookmark-dash-fill.bookmark-dash.bookmark-fill.bookmark-heart-fill.bookmark-heart.bookmark-plus-fill.bookmark-plus.bookmark-star-fill.bookmark-star.bookmark-x-fill.bookmark-x.bookmark.bookmarks-fill.bookmarks.bookshelf.boombox-fill.boombox.bootstrap-fill.bootstrap-icons.bootstrap-reboot.bootstrap.border-all.border-bottom.border-center.border-inner.border-left.border-middle.border-outer.border-right.border-style.border-top.border-width.border.bounding-box-circles.bounding-box.box-arrow-down-left.box-arrow-down-right.box-arrow-down.box-arrow-in-down-left.box-arrow-in-down-right.box-arrow-in-down.box-arrow-in-left.box-arrow-in-right.box-arrow-in-up-left.box-arrow-in-up-right.box-arrow-in-up.box-arrow-left.box-arrow-right.box-arrow-up-left.box-arrow-up-right.box-arrow-up.box-fill.box-seam-fill.box-seam.box.box2-fill.box2-heart-fill.box2-heart.box2.boxes.braces-asterisk.braces.bricks.briefcase-fill.briefcase.brightness-alt-high-fill.brightness-alt-high.brightness-alt-low-fill.brightness-alt-low.brightness-high-fill.brightness-high.brightness-low-fill.brightness-low.brilliance.broadcast-pin.broadcast.browser-chrome.browser-edge.browser-firefox.browser-safari.brush-fill.brush.bucket-fill.bucket.bug-fill.bug.building-add.building-check.building-dash.building-down.building-exclamation.building-fill-add.building-fill-check.building-fill-dash.building-fill-down.building-fill-exclamation.building-fill-gear.building-fill-lock.building-fill-slash.building-fill-up.building-fill-x.building-fill.building-gear.building-lock.building-slash.building-up.building-x.building.buildings-fill.buildings.bullseye.bus-front-fill.bus-front.c-circle-fill.c-circle.c-square-fill.c-square.cake-fill.cake.cake2-fill.cake2.calculator-fill.calculator.calendar-check-fill.calendar-check.calendar-date-fill.calendar-date.calendar-day-fill.calendar-day.calendar-event-fill.calendar-event.calendar-fill.calendar-heart-fill.calendar-heart.calendar-minus-fill.calendar-minus.calendar-month-fill.calendar-month.calendar-plus-fill.calendar-plus.calendar-range-fill.calendar-range.calendar-week-fill.calendar-week.calendar-x-fill.calendar-x.calendar.calendar2-check-fill.calendar2-check.calendar2-date-fill.calendar2-date.calendar2-day-fill.calendar2-day.calendar2-event-fill.calendar2-event.calendar2-fill.calendar2-heart-fill.calendar2-heart.calendar2-minus-fill.calendar2-minus.calendar2-month-fill.calendar2-month.calendar2-plus-fill.calendar2-plus.calendar2-range-fill.calendar2-range.calendar2-week-fill.calendar2-week.calendar2-x-fill.calendar2-x.calendar2.calendar3-event-fill.calendar3-event.calendar3-fill.calendar3-range-fill.calendar3-range.calendar3-week-fill.calendar3-week.calendar3.calendar4-event.calendar4-range.calendar4-week.calendar4.camera-fill.camera-reels-fill.camera-reels.camera-video-fill.camera-video-off-fill.camera-video-off.camera-video.camera.camera2.capslock-fill.capslock.capsule-pill.capsule.car-front-fill.car-front.card-checklist.card-heading.card-image.card-list.card-text.caret-down-fill.caret-down-square-fill.caret-down-square.caret-down.caret-left-fill.caret-left-square-fill.caret-left-square.caret-left.caret-right-fill.caret-right-square-fill.caret-right-square.caret-right.caret-up-fill.caret-up-square-fill.caret-up-square.caret-up.cart-check-fill.cart-check.cart-dash-fill.cart-dash.cart-fill.cart-plus-fill.cart-plus.cart-x-fill.cart-x.cart.cart2.cart3.cart4.cash-coin.cash-stack.cash.cassette-fill.cassette.cast.cc-circle-fill.cc-circle.cc-square-fill.cc-square.chat-dots-fill.chat-dots.chat-fill.chat-heart-fill.chat-heart.chat-left-dots-fill.chat-left-dots.chat-left-fill.chat-left-heart-fill.chat-left-heart.chat-left-quote-fill.chat-left-quote.chat-left-text-fill.chat-left-text.chat-left.chat-quote-fill.chat-quote.chat-right-dots-fill.chat-right-dots.chat-right-fill.chat-right-heart-fill.chat-right-heart.chat-right-quote-fill.chat-right-quote.chat-right-text-fill.chat-right-text.chat-right.chat-square-dots-fill.chat-square-dots.chat-square-fill.chat-square-heart-fill.chat-square-heart.chat-square-quote-fill.chat-square-quote.chat-square-text-fill.chat-square-text.chat-square.chat-text-fill.chat-text.chat.check-all.check-circle-fill.check-circle.check-lg.check-square-fill.check-square.check.check2-all.check2-circle.check2-square.check2.chevron-bar-contract.chevron-bar-down.chevron-bar-expand.chevron-bar-left.chevron-bar-right.chevron-bar-up.chevron-compact-down.chevron-compact-left.chevron-compact-right.chevron-compact-up.chevron-contract.chevron-double-down.chevron-double-left.chevron-double-right.chevron-double-up.chevron-down.chevron-expand.chevron-left.chevron-right.chevron-up.circle-fill.circle-half.circle-square.circle.clipboard-check-fill.clipboard-check.clipboard-data-fill.clipboard-data.clipboard-fill.clipboard-heart-fill.clipboard-heart.clipboard-minus-fill.clipboard-minus.clipboard-plus-fill.clipboard-plus.clipboard-pulse.clipboard-x-fill.clipboard-x.clipboard.clipboard2-check-fill.clipboard2-check.clipboard2-data-fill.clipboard2-data.clipboard2-fill.clipboard2-heart-fill.clipboard2-heart.clipboard2-minus-fill.clipboard2-minus.clipboard2-plus-fill.clipboard2-plus.clipboard2-pulse-fill.clipboard2-pulse.clipboard2-x-fill.clipboard2-x.clipboard2.clock-fill.clock-history.clock.cloud-arrow-down-fill.cloud-arrow-down.cloud-arrow-up-fill.cloud-arrow-up.cloud-check-fill.cloud-check.cloud-download-fill.cloud-download.cloud-drizzle-fill.cloud-drizzle.cloud-fill.cloud-fog-fill.cloud-fog.cloud-fog2-fill.cloud-fog2.cloud-hail-fill.cloud-hail.cloud-haze-fill.cloud-haze.cloud-haze2-fill.cloud-haze2.cloud-lightning-fill.cloud-lightning-rain-fill.cloud-lightning-rain.cloud-lightning.cloud-minus-fill.cloud-minus.cloud-moon-fill.cloud-moon.cloud-plus-fill.cloud-plus.cloud-rain-fill.cloud-rain-heavy-fill.cloud-rain-heavy.cloud-rain.cloud-slash-fill.cloud-slash.cloud-sleet-fill.cloud-sleet.cloud-snow-fill.cloud-snow.cloud-sun-fill.cloud-sun.cloud-upload-fill.cloud-upload.cloud.clouds-fill.clouds.cloudy-fill.cloudy.code-slash.code-square.code.coin.collection-fill.collection-play-fill.collection-play.collection.columns-gap.columns.command.compass-fill.compass.cone-striped.cone.controller.cookie.copy.cpu-fill.cpu.credit-card-2-back-fill.credit-card-2-back.credit-card-2-front-fill.credit-card-2-front.credit-card-fill.credit-card.crop.crosshair.crosshair2.cup-fill.cup-hot-fill.cup-hot.cup-straw.cup.currency-bitcoin.currency-dollar.currency-euro.currency-exchange.currency-pound.currency-rupee.currency-yen.cursor-fill.cursor-text.cursor.dash-circle-dotted.dash-circle-fill.dash-circle.dash-lg.dash-square-dotted.dash-square-fill.dash-square.dash.database-add.database-check.database-dash.database-down.database-exclamation.database-fill-add.database-fill-check.database-fill-dash.database-fill-down.database-fill-exclamation.database-fill-gear.database-fill-lock.database-fill-slash.database-fill-up.database-fill-x.database-fill.database-gear.database-lock.database-slash.database-up.database-x.database.device-hdd-fill.device-hdd.device-ssd-fill.device-ssd.diagram-2-fill.diagram-2.diagram-3-fill.diagram-3.diamond-fill.diamond-half.diamond.dice-1-fill.dice-1.dice-2-fill.dice-2.dice-3-fill.dice-3.dice-4-fill.dice-4.dice-5-fill.dice-5.dice-6-fill.dice-6.disc-fill.disc.discord.display-fill.display.displayport-fill.displayport.distribute-horizontal.distribute-vertical.door-closed-fill.door-closed.door-open-fill.door-open.dot.download.dpad-fill.dpad.dribbble.dropbox.droplet-fill.droplet-half.droplet.duffle-fill.duffle.ear-fill.ear.earbuds.easel-fill.easel.easel2-fill.easel2.easel3-fill.easel3.egg-fill.egg-fried.egg.eject-fill.eject.emoji-angry-fill.emoji-angry.emoji-astonished-fill.emoji-astonished.emoji-dizzy-fill.emoji-dizzy.emoji-expressionless-fill.emoji-expressionless.emoji-frown-fill.emoji-frown.emoji-grimace-fill.emoji-grimace.emoji-grin-fill.emoji-grin.emoji-heart-eyes-fill.emoji-heart-eyes.emoji-kiss-fill.emoji-kiss.emoji-laughing-fill.emoji-laughing.emoji-neutral-fill.emoji-neutral.emoji-smile-fill.emoji-smile-upside-down-fill.emoji-smile-upside-down.emoji-smile.emoji-sunglasses-fill.emoji-sunglasses.emoji-surprise-fill.emoji-surprise.emoji-tear-fill.emoji-tear.emoji-wink-fill.emoji-wink.envelope-arrow-down-fill.envelope-arrow-down.envelope-arrow-up-fill.envelope-arrow-up.envelope-at-fill.envelope-at.envelope-check-fill.envelope-check.envelope-dash-fill.envelope-dash.envelope-exclamation-fill.envelope-exclamation.envelope-fill.envelope-heart-fill.envelope-heart.envelope-open-fill.envelope-open-heart-fill.envelope-open-heart.envelope-open.envelope-paper-fill.envelope-paper-heart-fill.envelope-paper-heart.envelope-paper.envelope-plus-fill.envelope-plus.envelope-slash-fill.envelope-slash.envelope-x-fill.envelope-x.envelope.eraser-fill.eraser.escape.ethernet.ev-front-fill.ev-front.ev-station-fill.ev-station.exclamation-circle-fill.exclamation-circle.exclamation-diamond-fill.exclamation-diamond.exclamation-lg.exclamation-octagon-fill.exclamation-octagon.exclamation-square-fill.exclamation-square.exclamation-triangle-fill.exclamation-triangle.exclamation.exclude.explicit-fill.explicit.exposure.eye-fill.eye-slash-fill.eye-slash.eye.eyedropper.eyeglasses.facebook.fan.fast-forward-btn-fill.fast-forward-btn.fast-forward-circle-fill.fast-forward-circle.fast-forward-fill.fast-forward.feather.feather2.file-arrow-down-fill.file-arrow-down.file-arrow-up-fill.file-arrow-up.file-bar-graph-fill.file-bar-graph.file-binary-fill.file-binary.file-break-fill.file-break.file-check-fill.file-check.file-code-fill.file-code.file-diff-fill.file-diff.file-earmark-arrow-down-fill.file-earmark-arrow-down.file-earmark-arrow-up-fill.file-earmark-arrow-up.file-earmark-bar-graph-fill.file-earmark-bar-graph.file-earmark-binary-fill.file-earmark-binary.file-earmark-break-fill.file-earmark-break.file-earmark-check-fill.file-earmark-check.file-earmark-code-fill.file-earmark-code.file-earmark-diff-fill.file-earmark-diff.file-earmark-easel-fill.file-earmark-easel.file-earmark-excel-fill.file-earmark-excel.file-earmark-fill.file-earmark-font-fill.file-earmark-font.file-earmark-image-fill.file-earmark-image.file-earmark-lock-fill.file-earmark-lock.file-earmark-lock2-fill.file-earmark-lock2.file-earmark-medical-fill.file-earmark-medical.file-earmark-minus-fill.file-earmark-minus.file-earmark-music-fill.file-earmark-music.file-earmark-pdf-fill.file-earmark-pdf.file-earmark-person-fill.file-earmark-person.file-earmark-play-fill.file-earmark-play.file-earmark-plus-fill.file-earmark-plus.file-earmark-post-fill.file-earmark-post.file-earmark-ppt-fill.file-earmark-ppt.file-earmark-richtext-fill.file-earmark-richtext.file-earmark-ruled-fill.file-earmark-ruled.file-earmark-slides-fill.file-earmark-slides.file-earmark-spreadsheet-fill.file-earmark-spreadsheet.file-earmark-text-fill.file-earmark-text.file-earmark-word-fill.file-earmark-word.file-earmark-x-fill.file-earmark-x.file-earmark-zip-fill.file-earmark-zip.file-earmark.file-easel-fill.file-easel.file-excel-fill.file-excel.file-fill.file-font-fill.file-font.file-image-fill.file-image.file-lock-fill.file-lock.file-lock2-fill.file-lock2.file-medical-fill.file-medical.file-minus-fill.file-minus.file-music-fill.file-music.file-pdf-fill.file-pdf.file-person-fill.file-person.file-play-fill.file-play.file-plus-fill.file-plus.file-post-fill.file-post.file-ppt-fill.file-ppt.file-richtext-fill.file-richtext.file-ruled-fill.file-ruled.file-slides-fill.file-slides.file-spreadsheet-fill.file-spreadsheet.file-text-fill.file-text.file-word-fill.file-word.file-x-fill.file-x.file-zip-fill.file-zip.file.files-alt.files.filetype-aac.filetype-ai.filetype-bmp.filetype-cs.filetype-css.filetype-csv.filetype-doc.filetype-docx.filetype-exe.filetype-gif.filetype-heic.filetype-html.filetype-java.filetype-jpg.filetype-js.filetype-json.filetype-jsx.filetype-key.filetype-m4p.filetype-md.filetype-mdx.filetype-mov.filetype-mp3.filetype-mp4.filetype-otf.filetype-pdf.filetype-php.filetype-png.filetype-ppt.filetype-pptx.filetype-psd.filetype-py.filetype-raw.filetype-rb.filetype-sass.filetype-scss.filetype-sh.filetype-sql.filetype-svg.filetype-tiff.filetype-tsx.filetype-ttf.filetype-txt.filetype-wav.filetype-woff.filetype-xls.filetype-xlsx.filetype-xml.filetype-yml.film.filter-circle-fill.filter-circle.filter-left.filter-right.filter-square-fill.filter-square.filter.fingerprint.fire.flag-fill.flag.floppy-fill.floppy.floppy2-fill.floppy2.flower1.flower2.flower3.folder-check.folder-fill.folder-minus.folder-plus.folder-symlink-fill.folder-symlink.folder-x.folder.folder2-open.folder2.fonts.forward-fill.forward.front.fuel-pump-diesel-fill.fuel-pump-diesel.fuel-pump-fill.fuel-pump.fullscreen-exit.fullscreen.funnel-fill.funnel.gear-fill.gear-wide-connected.gear-wide.gear.gem.gender-ambiguous.gender-female.gender-male.gender-neuter.gender-trans.geo-alt-fill.geo-alt.geo-fill.geo.gift-fill.gift.git.github.gitlab.globe-americas.globe-asia-australia.globe-central-south-asia.globe-europe-africa.globe.globe2.google-play.google.gpu-card.graph-down-arrow.graph-down.graph-up-arrow.graph-up.grid-1x2-fill.grid-1x2.grid-3x2-gap-fill.grid-3x2-gap.grid-3x2.grid-3x3-gap-fill.grid-3x3-gap.grid-3x3.grid-fill.grid.grip-horizontal.grip-vertical.h-circle-fill.h-circle.h-square-fill.h-square.hammer.hand-index-fill.hand-index-thumb-fill.hand-index-thumb.hand-index.hand-thumbs-down-fill.hand-thumbs-down.hand-thumbs-up-fill.hand-thumbs-up.handbag-fill.handbag.hash.hdd-fill.hdd-network-fill.hdd-network.hdd-rack-fill.hdd-rack.hdd-stack-fill.hdd-stack.hdd.hdmi-fill.hdmi.headphones.headset-vr.headset.heart-arrow.heart-fill.heart-half.heart-pulse-fill.heart-pulse.heart.heartbreak-fill.heartbreak.hearts.heptagon-fill.heptagon-half.heptagon.hexagon-fill.hexagon-half.hexagon.highlighter.highlights.hospital-fill.hospital.hourglass-bottom.hourglass-split.hourglass-top.hourglass.house-add-fill.house-add.house-check-fill.house-check.house-dash-fill.house-dash.house-door-fill.house-door.house-down-fill.house-down.house-exclamation-fill.house-exclamation.house-fill.house-gear-fill.house-gear.house-heart-fill.house-heart.house-lock-fill.house-lock.house-slash-fill.house-slash.house-up-fill.house-up.house-x-fill.house-x.house.houses-fill.houses.hr.hurricane.hypnotize.image-alt.image-fill.image.images.inbox-fill.inbox.inboxes-fill.inboxes.incognito.indent.infinity.info-circle-fill.info-circle.info-lg.info-square-fill.info-square.info.input-cursor-text.input-cursor.instagram.intersect.journal-album.journal-arrow-down.journal-arrow-up.journal-bookmark-fill.journal-bookmark.journal-check.journal-code.journal-medical.journal-minus.journal-plus.journal-richtext.journal-text.journal-x.journal.journals.joystick.justify-left.justify-right.justify.kanban-fill.kanban.key-fill.key.keyboard-fill.keyboard.ladder.lamp-fill.lamp.laptop-fill.laptop.layer-backward.layer-forward.layers-fill.layers-half.layers.layout-sidebar-inset-reverse.layout-sidebar-inset.layout-sidebar-reverse.layout-sidebar.layout-split.layout-text-sidebar-reverse.layout-text-sidebar.layout-text-window-reverse.layout-text-window.layout-three-columns.layout-wtf.life-preserver.lightbulb-fill.lightbulb-off-fill.lightbulb-off.lightbulb.lightning-charge-fill.lightning-charge.lightning-fill.lightning.line.link-45deg.link.linkedin.list-check.list-columns-reverse.list-columns.list-nested.list-ol.list-stars.list-task.list-ul.list.lock-fill.lock.luggage-fill.luggage.lungs-fill.lungs.magic.magnet-fill.magnet.mailbox-flag.mailbox.mailbox2-flag.mailbox2.map-fill.map.markdown-fill.markdown.marker-tip.mask.mastodon.medium.megaphone-fill.megaphone.memory.menu-app-fill.menu-app.menu-button-fill.menu-button-wide-fill.menu-button-wide.menu-button.menu-down.menu-up.messenger.meta.mic-fill.mic-mute-fill.mic-mute.mic.microsoft-teams.microsoft.minecart-loaded.minecart.modem-fill.modem.moisture.moon-fill.moon-stars-fill.moon-stars.moon.mortarboard-fill.mortarboard.motherboard-fill.motherboard.mouse-fill.mouse.mouse2-fill.mouse2.mouse3-fill.mouse3.music-note-beamed.music-note-list.music-note.music-player-fill.music-player.newspaper.nintendo-switch.node-minus-fill.node-minus.node-plus-fill.node-plus.noise-reduction.nut-fill.nut.nvidia.nvme-fill.nvme.octagon-fill.octagon-half.octagon.opencollective.optical-audio-fill.optical-audio.option.outlet.p-circle-fill.p-circle.p-square-fill.p-square.paint-bucket.palette-fill.palette.palette2.paperclip.paragraph.pass-fill.pass.passport-fill.passport.patch-check-fill.patch-check.patch-exclamation-fill.patch-exclamation.patch-minus-fill.patch-minus.patch-plus-fill.patch-plus.patch-question-fill.patch-question.pause-btn-fill.pause-btn.pause-circle-fill.pause-circle.pause-fill.pause.paypal.pc-display-horizontal.pc-display.pc-horizontal.pc.pci-card-network.pci-card-sound.pci-card.peace-fill.peace.pen-fill.pen.pencil-fill.pencil-square.pencil.pentagon-fill.pentagon-half.pentagon.people-fill.people.percent.person-add.person-arms-up.person-badge-fill.person-badge.person-bounding-box.person-check-fill.person-check.person-circle.person-dash-fill.person-dash.person-down.person-exclamation.person-fill-add.person-fill-check.person-fill-dash.person-fill-down.person-fill-exclamation.person-fill-gear.person-fill-lock.person-fill-slash.person-fill-up.person-fill-x.person-fill.person-gear.person-heart.person-hearts.person-lines-fill.person-lock.person-plus-fill.person-plus.person-raised-hand.person-rolodex.person-slash.person-square.person-standing-dress.person-standing.person-up.person-vcard-fill.person-vcard.person-video.person-video2.person-video3.person-walking.person-wheelchair.person-workspace.person-x-fill.person-x.person.phone-fill.phone-flip.phone-landscape-fill.phone-landscape.phone-vibrate-fill.phone-vibrate.phone.pie-chart-fill.pie-chart.piggy-bank-fill.piggy-bank.pin-angle-fill.pin-angle.pin-fill.pin-map-fill.pin-map.pin.pinterest.pip-fill.pip.play-btn-fill.play-btn.play-circle-fill.play-circle.play-fill.play.playstation.plug-fill.plug.plugin.plus-circle-dotted.plus-circle-fill.plus-circle.plus-lg.plus-slash-minus.plus-square-dotted.plus-square-fill.plus-square.plus.postage-fill.postage-heart-fill.postage-heart.postage.postcard-fill.postcard-heart-fill.postcard-heart.postcard.power.prescription.prescription2.printer-fill.printer.projector-fill.projector.puzzle-fill.puzzle.qr-code-scan.qr-code.question-circle-fill.question-circle.question-diamond-fill.question-diamond.question-lg.question-octagon-fill.question-octagon.question-square-fill.question-square.question.quora.quote.r-circle-fill.r-circle.r-square-fill.r-square.radar.radioactive.rainbow.receipt-cutoff.receipt.reception-0.reception-1.reception-2.reception-3.reception-4.record-btn-fill.record-btn.record-circle-fill.record-circle.record-fill.record.record2-fill.record2.recycle.reddit.regex.repeat-1.repeat.reply-all-fill.reply-all.reply-fill.reply.rewind-btn-fill.rewind-btn.rewind-circle-fill.rewind-circle.rewind-fill.rewind.robot.rocket-fill.rocket-takeoff-fill.rocket-takeoff.rocket.router-fill.router.rss-fill.rss.rulers.safe-fill.safe.safe2-fill.safe2.save-fill.save.save2-fill.save2.scissors.scooter.screwdriver.sd-card-fill.sd-card.search-heart-fill.search-heart.search.segmented-nav.send-arrow-down-fill.send-arrow-down.send-arrow-up-fill.send-arrow-up.send-check-fill.send-check.send-dash-fill.send-dash.send-exclamation-fill.send-exclamation.send-fill.send-plus-fill.send-plus.send-slash-fill.send-slash.send-x-fill.send-x.send.server.shadows.share-fill.share.shield-check.shield-exclamation.shield-fill-check.shield-fill-exclamation.shield-fill-minus.shield-fill-plus.shield-fill-x.shield-fill.shield-lock-fill.shield-lock.shield-minus.shield-plus.shield-shaded.shield-slash-fill.shield-slash.shield-x.shield.shift-fill.shift.shop-window.shop.shuffle.sign-dead-end-fill.sign-dead-end.sign-do-not-enter-fill.sign-do-not-enter.sign-intersection-fill.sign-intersection-side-fill.sign-intersection-side.sign-intersection-t-fill.sign-intersection-t.sign-intersection-y-fill.sign-intersection-y.sign-intersection.sign-merge-left-fill.sign-merge-left.sign-merge-right-fill.sign-merge-right.sign-no-left-turn-fill.sign-no-left-turn.sign-no-parking-fill.sign-no-parking.sign-no-right-turn-fill.sign-no-right-turn.sign-railroad-fill.sign-railroad.sign-stop-fill.sign-stop-lights-fill.sign-stop-lights.sign-stop.sign-turn-left-fill.sign-turn-left.sign-turn-right-fill.sign-turn-right.sign-turn-slight-left-fill.sign-turn-slight-left.sign-turn-slight-right-fill.sign-turn-slight-right.sign-yield-fill.sign-yield.signal.signpost-2-fill.signpost-2.signpost-fill.signpost-split-fill.signpost-split.signpost.sim-fill.sim-slash-fill.sim-slash.sim.sina-weibo.skip-backward-btn-fill.skip-backward-btn.skip-backward-circle-fill.skip-backward-circle.skip-backward-fill.skip-backward.skip-end-btn-fill.skip-end-btn.skip-end-circle-fill.skip-end-circle.skip-end-fill.skip-end.skip-forward-btn-fill.skip-forward-btn.skip-forward-circle-fill.skip-forward-circle.skip-forward-fill.skip-forward.skip-start-btn-fill.skip-start-btn.skip-start-circle-fill.skip-start-circle.skip-start-fill.skip-start.skype.slack.slash-circle-fill.slash-circle.slash-lg.slash-square-fill.slash-square.slash.sliders.sliders2-vertical.sliders2.smartwatch.snapchat.snow.snow2.snow3.sort-alpha-down-alt.sort-alpha-down.sort-alpha-up-alt.sort-alpha-up.sort-down-alt.sort-down.sort-numeric-down-alt.sort-numeric-down.sort-numeric-up-alt.sort-numeric-up.sort-up-alt.sort-up.soundwave.sourceforge.speaker-fill.speaker.speedometer.speedometer2.spellcheck.spotify.square-fill.square-half.square.stack-overflow.stack.star-fill.star-half.star.stars.steam.stickies-fill.stickies.sticky-fill.sticky.stop-btn-fill.stop-btn.stop-circle-fill.stop-circle.stop-fill.stop.stoplights-fill.stoplights.stopwatch-fill.stopwatch.strava.stripe.subscript.substack.subtract.suit-club-fill.suit-club.suit-diamond-fill.suit-diamond.suit-heart-fill.suit-heart.suit-spade-fill.suit-spade.suitcase-fill.suitcase-lg-fill.suitcase-lg.suitcase.suitcase2-fill.suitcase2.sun-fill.sun.sunglasses.sunrise-fill.sunrise.sunset-fill.sunset.superscript.symmetry-horizontal.symmetry-vertical.table.tablet-fill.tablet-landscape-fill.tablet-landscape.tablet.tag-fill.tag.tags-fill.tags.taxi-front-fill.taxi-front.telegram.telephone-fill.telephone-forward-fill.telephone-forward.telephone-inbound-fill.telephone-inbound.telephone-minus-fill.telephone-minus.telephone-outbound-fill.telephone-outbound.telephone-plus-fill.telephone-plus.telephone-x-fill.telephone-x.telephone.tencent-qq.terminal-dash.terminal-fill.terminal-plus.terminal-split.terminal-x.terminal.text-center.text-indent-left.text-indent-right.text-left.text-paragraph.text-right.text-wrap.textarea-resize.textarea-t.textarea.thermometer-half.thermometer-high.thermometer-low.thermometer-snow.thermometer-sun.thermometer.threads-fill.threads.three-dots-vertical.three-dots.thunderbolt-fill.thunderbolt.ticket-detailed-fill.ticket-detailed.ticket-fill.ticket-perforated-fill.ticket-perforated.ticket.tiktok.toggle-off.toggle-on.toggle2-off.toggle2-on.toggles.toggles2.tools.tornado.train-freight-front-fill.train-freight-front.train-front-fill.train-front.train-lightrail-front-fill.train-lightrail-front.translate.transparency.trash-fill.trash.trash2-fill.trash2.trash3-fill.trash3.tree-fill.tree.trello.triangle-fill.triangle-half.triangle.trophy-fill.trophy.tropical-storm.truck-flatbed.truck-front-fill.truck-front.truck.tsunami.tv-fill.tv.twitch.twitter-x.twitter.type-bold.type-h1.type-h2.type-h3.type-h4.type-h5.type-h6.type-italic.type-strikethrough.type-underline.type.ubuntu.ui-checks-grid.ui-checks.ui-radios-grid.ui-radios.umbrella-fill.umbrella.unindent.union.unity.universal-access-circle.universal-access.unlock-fill.unlock.upc-scan.upc.upload.usb-c-fill.usb-c.usb-drive-fill.usb-drive.usb-fill.usb-micro-fill.usb-micro.usb-mini-fill.usb-mini.usb-plug-fill.usb-plug.usb-symbol.usb.valentine.valentine2.vector-pen.view-list.view-stacked.vignette.vimeo.vinyl-fill.vinyl.virus.virus2.voicemail.volume-down-fill.volume-down.volume-mute-fill.volume-mute.volume-off-fill.volume-off.volume-up-fill.volume-up.vr.wallet-fill.wallet.wallet2.watch.water.webcam-fill.webcam.wechat.whatsapp.wifi-1.wifi-2.wifi-off.wifi.wikipedia.wind.window-dash.window-desktop.window-dock.window-fullscreen.window-plus.window-sidebar.window-split.window-stack.window-x.window.windows.wordpress.wrench-adjustable-circle-fill.wrench-adjustable-circle.wrench-adjustable.wrench.x-circle-fill.x-circle.x-diamond-fill.x-diamond.x-lg.x-octagon-fill.x-octagon.x-square-fill.x-square.x.xbox.yelp.yin-yang.youtube.zoom-in.zoom-out`.split(`.`)})].flatMap(([i,a])=>a.map(a=>i+`:`+a)).map(i=>` `+i),` }`,`}`].join(`
|
|
17
|
+
`),Scheme=`likec4builtin`,Uri=`${Scheme}:///likec4/lib/icons.c4`;function isLikeC4Builtin(i){return(`uri`in i?i.uri:i).scheme===Scheme}function isNotLikeC4Builtin(i){return!isLikeC4Builtin(i)}var NoopFileSystemProvider=class{scanProjectFiles(){return Promise.resolve([])}scanDirectory(){return Promise.resolve([])}readFile(i){if(isLikeC4Builtin(i))return Promise.resolve(LibIcons);throw Error(`No file system is available.`)}readDirectory(){return Promise.resolve([])}loadProjectConfig(){throw Error(`No file system is available.`)}writeFile(){throw Error(`No file system is available.`)}deleteFile(){throw Error(`No file system is available.`)}},NoopFileSystemWatcher=class{watch(){}dispose(){return Promise.resolve()}},NoopLikeC4ManualLayouts=class{read(){return Promise.resolve(null)}write(){return Promise.reject(Error(`NoopLikeC4ManualLayouts: write operation is not supported`))}remove(){return Promise.resolve(null)}clearCaches(){}};const NoFileSystemWatcher={fileSystemWatcher:()=>new NoopFileSystemWatcher},NoFileSystem={fileSystemProvider:()=>new NoopFileSystemProvider,...NoFileSystemWatcher},NoLikeC4ManualLayouts={manualLayouts:()=>new NoopLikeC4ManualLayouts},JsonConfigInputSchema=LikeC4ProjectJsonConfigSchema.pick({extends:!0,styles:!0}).loose(),normalizeExtends=i=>i?Array.isArray(i)?i:[i]:[],parseJsonConfig=async i=>{let a=await fs$2.readFile(i,`utf-8`),o;try{o=lib.parse(a.trim()||`{}`)}catch(a){throw wrapError(a,`${i}:`)}if(!o||typeof o!=`object`||Array.isArray(o))throw Error(`${i}: Config must be a JSON object`);let s=JsonConfigInputSchema.safeParse(o);if(!s.success)throw Error(`${i}: Invalid config\n`+v4_default.prettifyError(s.error));return s.data},loadJsonConfigs=async(i,a)=>{if(a.includes(i)){let o=a.indexOf(i),s=[...a.slice(o),i].join(` -> `);throw Error(`Config extends cycle detected: ${s}`)}let o=await parseJsonConfig(i),s=normalizeExtends(o.extends),c=[...a,i],l=[];for(let a of s){let o=resolve(dirname(i),a);l.push(...await loadJsonConfigs(o,c))}return[...l,o]};async function loadConfig(i){i=typeof i==`string`?i:i.fsPath,logger$17.getChild(`config`).debug`Loading config: ${i}`;let a=dirname(i),o=basename(i),s={name:basename(a)};if(isLikeC4JsonConfig(o)){let a=await loadJsonConfigs(resolve(i),[]);invariant(t$4(a,1),`Expect at least one config`);let o=n(t$5(a),[`extends`,`styles`]),c=a.map(i=>i.styles).filter(e$1),d=c.length>0?defu({},...c.reverse()):void 0;return validateProjectConfig({...s,...o,...d?{styles:d}:{}})}invariant(isLikeC4NonJsonConfig(o),`Invalid name for config file: ${i}`);let{mod:c}=await bundleRequire({filepath:i,cwd:a,esbuildOptions:{resolveExtensions:[`.ts`,`.mts`,`.cts`,`.mjs`,`.js`,`.cjs`],plugins:[{name:`likec4-config`,setup(i){i.onResolve({filter:/^@?likec4\/config$/},i=>({path:i.path,namespace:`likec4-config`})),i.onEnd(i=>{let a=formatMessagesSync(i.errors,{kind:`error`});for(let i of a)logger$17.error(i)}),i.onLoad({filter:/.*/,namespace:`likec4-config`},i=>({contents:`
|
|
18
|
+
// Mock implementation to allow loading config files without bundling @likec4/config
|
|
19
|
+
function mock(x) { return x }
|
|
20
|
+
export {
|
|
21
|
+
mock as defineConfig,
|
|
22
|
+
mock as defineGenerators,
|
|
23
|
+
mock as defineStyle,
|
|
24
|
+
mock as defineTheme,
|
|
25
|
+
mock as defineThemeColor,
|
|
26
|
+
}`,loader:`js`}))}}]}});return validateProjectConfig(Object.assign(s,c?.default??c))}const logger$16=logger$17.getChild(`server`);function logWarnError(i){logger$16.warn(loggable(i))}init_main();const layoutsLogger=logger$16.getChild(`manual-layouts`),isManualLayoutFile=i=>i.endsWith(`.likec4.snap`);function fileName(i){return`${i}.likec4.snap`}function getManualLayoutsOutDir(i){return UriUtils.resolvePath(i.folderUri,i.config.manualLayouts?.outDir??`.likec4`)}const WithLikeC4ManualLayouts={manualLayouts:i=>new DefaultLikeC4ManualLayouts(i)},RELATIVE_PATH_PREFIX=`file://./`;var DefaultLikeC4ManualLayouts=class{cache;constructor(i){this.services=i,this.cache=new SimpleCache,onNextTick(()=>{i.workspace.ProjectsManager.onProjectsUpdate(()=>{this.clearCaches()})})}async read(i){return await this.cache.get(i.id,async()=>{let a=layoutsLogger.getChild(i.id),o=this.services.workspace.FileSystemProvider,s=getManualLayoutsOutDir(i),c=[];try{let l=await o.scanDirectory(s,isManualLayoutFile);if(l.length===0)return null;for(let s of l)try{let a=await o.readFile(s.uri),l=lib.parse(a),d=this.resolveIconPathsAfterRead(l,i.folderUri);c.push({...d,_layout:`manual`})}catch(i){a.warn(`Failed to read view snapshot ${s.uri.fsPath}`,{err:i})}c.length&&a.debug`read manual layouts for ${i.id}, found ${c.length}`}catch(o){a.warn(`Failed to read manual layouts for ${i.folderUri.fsPath}`,{err:o})}if(c.length===0)return null;let l=t$6(c,e(`id`));return{hash:objectHash(l),views:l}})}async write(i,a){let o=layoutsLogger.getChild(i.id),s=getManualLayoutsOutDir(i),c=UriUtils.joinPath(s,fileName(a.id));if(`manualLayout`in a){let{manualLayout:i,...o}=a;a=o}let l=lib.stringify(this.normalizeIconPathsForWrite(a,i.folderUri),{space:2,quote:`'`}),d={uri:c.toString(),range:Range.create(Position.create(0,0),Position.create(l.split(`
|
|
27
|
+
`).length-1,1))};o.debug`write snapshot of ${a.id} in project ${i.id} to ${c.fsPath}`;let f=this.services.workspace.FileSystemProvider;try{await f.writeFile(c,l+`
|
|
28
|
+
`)}catch(i){o.warn(`Failed to write snapshot ${a.id} to ${c.fsPath}`,{err:i})}return this.cache.delete(i.id),d}async remove(i,a){let o=layoutsLogger.getChild(i.id),s=getManualLayoutsOutDir(i),c=UriUtils.joinPath(s,fileName(a));o.debug`delete snapshot of ${a} in project ${i.id}. File: ${c.fsPath}`;let l={uri:c.toString(),range:Range.create(0,0,0,0)};this.cache.delete(i.id);try{if(!await this.services.workspace.FileSystemProvider.deleteFile(c))return o.warn`Snapshot ${a} did not exist at ${c.fsPath}`,null}catch(i){o.warn(`Failed to delete snapshot ${a} from ${c.fsPath}`,{err:i})}return l}clearCaches(){layoutsLogger.trace`clear caches`,this.cache.clear()}normalizeIconPathsForWrite(i,a){let o=i.nodes.map(i=>{if(!i.icon||typeof i.icon!=`string`)return i;if(i.icon.startsWith(`file://`)){let o=URI.parse(i.icon),s=UriUtils.relative(a,o);return s.startsWith(`..`)?i:{...i,icon:`${RELATIVE_PATH_PREFIX}${s}`}}return i});return{...i,nodes:o}}resolveIconPathsAfterRead(i,a){let o=i.nodes.map(i=>{if(!i.icon||typeof i.icon!=`string`)return i;if(i.icon.startsWith(RELATIVE_PATH_PREFIX)){let o=i.icon.substring(9),s=UriUtils.joinPath(a,o);return{...i,icon:s.toString()}}return i});return{...i,nodes:o}}};const AnyProperty=`AnyProperty`;function isAnyProperty(i){return reflection.isInstance(i,AnyProperty)}const ColorLiteral=`ColorLiteral`;function isColorLiteral(i){return reflection.isInstance(i,ColorLiteral)}const DeploymentElement=`DeploymentElement`;function isDeploymentElement(i){return reflection.isInstance(i,DeploymentElement)}const DeploymentNodeOrElementKind=`DeploymentNodeOrElementKind`,DeploymentViewRule=`DeploymentViewRule`;function isDeploymentViewRule(i){return reflection.isInstance(i,DeploymentViewRule)}const DynamicViewProperty=`DynamicViewProperty`,DynamicViewRule=`DynamicViewRule`;function isDynamicViewRule(i){return reflection.isInstance(i,DynamicViewRule)}const DynamicViewStep=`DynamicViewStep`;function isDynamicViewStep(i){return reflection.isInstance(i,DynamicViewStep)}const ElementProperty=`ElementProperty`;function isElementProperty(i){return reflection.isInstance(i,ElementProperty)}const ExpressionV2=`ExpressionV2`;function isExpressionV2(i){return reflection.isInstance(i,ExpressionV2)}const ExtendElementProperty=`ExtendElementProperty`,ExtendRelationProperty=`ExtendRelationProperty`,FqnExpr$2=`FqnExpr`;function isFqnExpr(i){return reflection.isInstance(i,FqnExpr$2)}const FqnExprOrWhere=`FqnExprOrWhere`;function isFqnExprOrWhere(i){return reflection.isInstance(i,FqnExprOrWhere)}const FqnExprOrWith=`FqnExprOrWith`;function isFqnExprOrWith(i){return reflection.isInstance(i,FqnExprOrWith)}const FqnReferenceable=`FqnReferenceable`,LikeC4View=`LikeC4View`;function isLikeC4View(i){return reflection.isInstance(i,LikeC4View)}const MetadataProperty=`MetadataProperty`;function isMetadataProperty(i){return reflection.isInstance(i,MetadataProperty)}const MetadataValue=`MetadataValue`,ModelReferenceable=`ModelReferenceable`,Referenceable=`Referenceable`,RelationExpr$1=`RelationExpr`;function isRelationExpr(i){return reflection.isInstance(i,RelationExpr$1)}const RelationExprOrWhere=`RelationExprOrWhere`;function isRelationExprOrWhere(i){return reflection.isInstance(i,RelationExprOrWhere)}const RelationExprOrWith=`RelationExprOrWith`;function isRelationExprOrWith(i){return reflection.isInstance(i,RelationExprOrWith)}const RelationProperty=`RelationProperty`,RelationshipStyleProperty=`RelationshipStyleProperty`;function isRelationshipStyleProperty(i){return reflection.isInstance(i,RelationshipStyleProperty)}const SizeProperty=`SizeProperty`;function isSizeProperty(i){return reflection.isInstance(i,SizeProperty)}const StringProperty=`StringProperty`;function isStringProperty(i){return reflection.isInstance(i,StringProperty)}const StyleProperty=`StyleProperty`;function isStyleProperty(i){return reflection.isInstance(i,StyleProperty)}const ViewProperty=`ViewProperty`;function isViewProperty(i){return reflection.isInstance(i,ViewProperty)}const ViewRule=`ViewRule`;function isViewRule(i){return reflection.isInstance(i,ViewRule)}const ViewRuleStyleOrGlobalRef=`ViewRuleStyleOrGlobalRef`;function isViewRuleStyleOrGlobalRef(i){return reflection.isInstance(i,ViewRuleStyleOrGlobalRef)}const WhereElement=`WhereElement`;function isWhereElement(i){return reflection.isInstance(i,WhereElement)}const WhereElementExpression=`WhereElementExpression`;function isWhereElementExpression(i){return reflection.isInstance(i,WhereElementExpression)}const WhereExpression=`WhereExpression`,WhereKindEqual=`WhereKindEqual`;function isWhereKindEqual(i){return reflection.isInstance(i,WhereKindEqual)}const WhereRelation=`WhereRelation`;function isWhereRelation(i){return reflection.isInstance(i,WhereRelation)}const WhereRelationExpression=`WhereRelationExpression`;function isWhereRelationExpression(i){return reflection.isInstance(i,WhereRelationExpression)}const WhereTagEqual=`WhereTagEqual`;function isWhereTagEqual(i){return reflection.isInstance(i,WhereTagEqual)}const AbstractDynamicStep=`AbstractDynamicStep`,ArrowProperty=`ArrowProperty`;function isArrowProperty(i){return reflection.isInstance(i,ArrowProperty)}const BorderProperty=`BorderProperty`;function isBorderProperty(i){return reflection.isInstance(i,BorderProperty)}const ColorProperty=`ColorProperty`;function isColorProperty(i){return reflection.isInstance(i,ColorProperty)}const CustomColor=`CustomColor`,CustomElementProperties=`CustomElementProperties`;function isCustomElementProperties(i){return reflection.isInstance(i,CustomElementProperties)}const CustomRelationProperties=`CustomRelationProperties`;function isCustomRelationProperties(i){return reflection.isInstance(i,CustomRelationProperties)}const DeployedInstance=`DeployedInstance`;function isDeployedInstance(i){return reflection.isInstance(i,DeployedInstance)}const DeployedInstanceBody=`DeployedInstanceBody`;function isDeployedInstanceBody(i){return reflection.isInstance(i,DeployedInstanceBody)}const DeploymentNode=`DeploymentNode`;function isDeploymentNode$1(i){return reflection.isInstance(i,DeploymentNode)}const DeploymentNodeBody=`DeploymentNodeBody`;function isDeploymentNodeBody(i){return reflection.isInstance(i,DeploymentNodeBody)}const DeploymentNodeKind=`DeploymentNodeKind`;function isDeploymentNodeKind(i){return reflection.isInstance(i,DeploymentNodeKind)}const DeploymentRelation=`DeploymentRelation`;function isDeploymentRelation(i){return reflection.isInstance(i,DeploymentRelation)}const DeploymentRelationBody=`DeploymentRelationBody`;function isDeploymentRelationBody(i){return reflection.isInstance(i,DeploymentRelationBody)}const DeploymentView=`DeploymentView`;function isDeploymentView$1(i){return reflection.isInstance(i,DeploymentView)}const DeploymentViewBody=`DeploymentViewBody`;function isDeploymentViewBody(i){return reflection.isInstance(i,DeploymentViewBody)}const DeploymentViewRulePredicate=`DeploymentViewRulePredicate`;function isDeploymentViewRulePredicate(i){return reflection.isInstance(i,DeploymentViewRulePredicate)}const DeploymentViewRuleStyle=`DeploymentViewRuleStyle`;function isDeploymentViewRuleStyle(i){return reflection.isInstance(i,DeploymentViewRuleStyle)}const DirectedRelationExpr=`DirectedRelationExpr`;function isDirectedRelationExpr(i){return reflection.isInstance(i,DirectedRelationExpr)}const DynamicView=`DynamicView`;function isDynamicView$1(i){return reflection.isInstance(i,DynamicView)}const DynamicViewBody=`DynamicViewBody`;function isDynamicViewBody(i){return reflection.isInstance(i,DynamicViewBody)}const DynamicViewDisplayVariantProperty=`DynamicViewDisplayVariantProperty`;function isDynamicViewDisplayVariantProperty(i){return reflection.isInstance(i,DynamicViewDisplayVariantProperty)}const DynamicViewGlobalPredicateRef=`DynamicViewGlobalPredicateRef`;function isDynamicViewGlobalPredicateRef(i){return reflection.isInstance(i,DynamicViewGlobalPredicateRef)}const DynamicViewIncludePredicate=`DynamicViewIncludePredicate`;function isDynamicViewIncludePredicate(i){return reflection.isInstance(i,DynamicViewIncludePredicate)}const DynamicViewParallelSteps=`DynamicViewParallelSteps`;function isDynamicViewParallelSteps(i){return reflection.isInstance(i,DynamicViewParallelSteps)}const DynamicViewRef=`DynamicViewRef`,Element=`Element`;function isElement(i){return reflection.isInstance(i,Element)}const ElementBody=`ElementBody`;function isElementBody(i){return reflection.isInstance(i,ElementBody)}const ElementKind=`ElementKind`;function isElementKind(i){return reflection.isInstance(i,ElementKind)}const ElementKindExpression=`ElementKindExpression`;function isElementKindExpression(i){return reflection.isInstance(i,ElementKindExpression)}const ElementRef=`ElementRef`;function isElementRef(i){return reflection.isInstance(i,ElementRef)}const ElementStringProperty=`ElementStringProperty`;function isElementStringProperty(i){return reflection.isInstance(i,ElementStringProperty)}const ElementStyleProperty=`ElementStyleProperty`;function isElementStyleProperty(i){return reflection.isInstance(i,ElementStyleProperty)}const ElementTagExpression=`ElementTagExpression`;function isElementTagExpression(i){return reflection.isInstance(i,ElementTagExpression)}const ElementView=`ElementView`;function isElementView$1(i){return reflection.isInstance(i,ElementView)}const ElementViewBody=`ElementViewBody`;function isElementViewBody(i){return reflection.isInstance(i,ElementViewBody)}const ElementViewRef=`ElementViewRef`,Expressions=`Expressions`;function isExpressions(i){return reflection.isInstance(i,Expressions)}const ExtendDeployment=`ExtendDeployment`;function isExtendDeployment(i){return reflection.isInstance(i,ExtendDeployment)}const ExtendDeploymentBody=`ExtendDeploymentBody`;function isExtendDeploymentBody(i){return reflection.isInstance(i,ExtendDeploymentBody)}const ExtendElement=`ExtendElement`;function isExtendElement(i){return reflection.isInstance(i,ExtendElement)}const ExtendElementBody=`ExtendElementBody`;function isExtendElementBody(i){return reflection.isInstance(i,ExtendElementBody)}const ExtendRelation=`ExtendRelation`;function isExtendRelation(i){return reflection.isInstance(i,ExtendRelation)}const ExtendRelationBody=`ExtendRelationBody`;function isExtendRelationBody(i){return reflection.isInstance(i,ExtendRelationBody)}const FqnExpressions=`FqnExpressions`;function isFqnExpressions(i){return reflection.isInstance(i,FqnExpressions)}const FqnExprWhere=`FqnExprWhere`;function isFqnExprWhere(i){return reflection.isInstance(i,FqnExprWhere)}const FqnExprWith=`FqnExprWith`;function isFqnExprWith(i){return reflection.isInstance(i,FqnExprWith)}const FqnRef$2=`FqnRef`;function isFqnRef(i){return reflection.isInstance(i,FqnRef$2)}const FqnRefExpr=`FqnRefExpr`;function isFqnRefExpr(i){return reflection.isInstance(i,FqnRefExpr)}const GlobalDynamicPredicateGroup=`GlobalDynamicPredicateGroup`;function isGlobalDynamicPredicateGroup(i){return reflection.isInstance(i,GlobalDynamicPredicateGroup)}const GlobalPredicateGroup=`GlobalPredicateGroup`;function isGlobalPredicateGroup(i){return reflection.isInstance(i,GlobalPredicateGroup)}const Globals=`Globals`;function isGlobals(i){return reflection.isInstance(i,Globals)}const GlobalStyle=`GlobalStyle`;function isGlobalStyle(i){return reflection.isInstance(i,GlobalStyle)}const GlobalStyleGroup=`GlobalStyleGroup`;function isGlobalStyleGroup(i){return reflection.isInstance(i,GlobalStyleGroup)}const GlobalStyleId=`GlobalStyleId`,HexColor=`HexColor`;function isHexColor(i){return reflection.isInstance(i,HexColor)}const IconColorProperty=`IconColorProperty`;function isIconColorProperty(i){return reflection.isInstance(i,IconColorProperty)}const IconPositionProperty=`IconPositionProperty`;function isIconPositionProperty(i){return reflection.isInstance(i,IconPositionProperty)}const IconProperty=`IconProperty`;function isIconProperty(i){return reflection.isInstance(i,IconProperty)}const IconSizeProperty=`IconSizeProperty`;function isIconSizeProperty(i){return reflection.isInstance(i,IconSizeProperty)}const Imported=`Imported`;function isImported(i){return reflection.isInstance(i,Imported)}const ImportsFromPoject=`ImportsFromPoject`;function isImportsFromPoject(i){return reflection.isInstance(i,ImportsFromPoject)}const IncomingRelationExpr=`IncomingRelationExpr`;function isIncomingRelationExpr(i){return reflection.isInstance(i,IncomingRelationExpr)}const InOutRelationExpr=`InOutRelationExpr`;function isInOutRelationExpr(i){return reflection.isInstance(i,InOutRelationExpr)}const LibIcon=`LibIcon`;function isLibIcon(i){return reflection.isInstance(i,LibIcon)}const LikeC4Grammar$1=`LikeC4Grammar`;function isLikeC4Grammar(i){return reflection.isInstance(i,LikeC4Grammar$1)}const LikeC4Lib=`LikeC4Lib`;function isLikeC4Lib(i){return reflection.isInstance(i,LikeC4Lib)}const LineProperty=`LineProperty`;function isLineProperty(i){return reflection.isInstance(i,LineProperty)}const LinkProperty=`LinkProperty`;function isLinkProperty(i){return reflection.isInstance(i,LinkProperty)}const MarkdownOrString=`MarkdownOrString`;function isMarkdownOrString(i){return reflection.isInstance(i,MarkdownOrString)}const MetadataArray=`MetadataArray`;function isMetadataArray(i){return reflection.isInstance(i,MetadataArray)}const MetadataAttribute=`MetadataAttribute`;function isMetadataAttribute(i){return reflection.isInstance(i,MetadataAttribute)}const MetadataBody=`MetadataBody`;function isMetadataBody(i){return reflection.isInstance(i,MetadataBody)}const Model=`Model`;function isModel(i){return reflection.isInstance(i,Model)}const ModelDeployments=`ModelDeployments`;function isModelDeployments(i){return reflection.isInstance(i,ModelDeployments)}const ModelViews=`ModelViews`;function isModelViews(i){return reflection.isInstance(i,ModelViews)}const MultipleProperty=`MultipleProperty`;function isMultipleProperty(i){return reflection.isInstance(i,MultipleProperty)}const NavigateToProperty=`NavigateToProperty`;function isNavigateToProperty(i){return reflection.isInstance(i,NavigateToProperty)}const NotationProperty=`NotationProperty`;function isNotationProperty(i){return reflection.isInstance(i,NotationProperty)}const NotesProperty=`NotesProperty`;function isNotesProperty(i){return reflection.isInstance(i,NotesProperty)}const OpacityProperty=`OpacityProperty`;function isOpacityProperty(i){return reflection.isInstance(i,OpacityProperty)}const OutgoingRelationExpr=`OutgoingRelationExpr`;function isOutgoingRelationExpr(i){return reflection.isInstance(i,OutgoingRelationExpr)}const PaddingSizeProperty=`PaddingSizeProperty`;function isPaddingSizeProperty(i){return reflection.isInstance(i,PaddingSizeProperty)}const Relation=`Relation`;function isRelation(i){return reflection.isInstance(i,Relation)}const RelationBody=`RelationBody`;function isRelationBody(i){return reflection.isInstance(i,RelationBody)}const RelationExprWhere=`RelationExprWhere`;function isRelationExprWhere(i){return reflection.isInstance(i,RelationExprWhere)}const RelationExprWith=`RelationExprWith`;function isRelationExprWith(i){return reflection.isInstance(i,RelationExprWith)}const RelationKindDotRef=`RelationKindDotRef`;function isRelationKindDotRef(i){return reflection.isInstance(i,RelationKindDotRef)}const RelationNavigateToProperty=`RelationNavigateToProperty`;function isRelationNavigateToProperty(i){return reflection.isInstance(i,RelationNavigateToProperty)}const RelationshipKind=`RelationshipKind`;function isRelationshipKind(i){return reflection.isInstance(i,RelationshipKind)}const RelationStringProperty=`RelationStringProperty`;function isRelationStringProperty(i){return reflection.isInstance(i,RelationStringProperty)}const RelationStyleProperty=`RelationStyleProperty`;function isRelationStyleProperty(i){return reflection.isInstance(i,RelationStyleProperty)}const RGBAColor=`RGBAColor`;function isRGBAColor(i){return reflection.isInstance(i,RGBAColor)}const ShapeProperty=`ShapeProperty`;function isShapeProperty(i){return reflection.isInstance(i,ShapeProperty)}const ShapeSizeProperty=`ShapeSizeProperty`;function isShapeSizeProperty(i){return reflection.isInstance(i,ShapeSizeProperty)}const SpecificationColor=`SpecificationColor`;function isSpecificationColor(i){return reflection.isInstance(i,SpecificationColor)}const SpecificationDeploymentNodeKind=`SpecificationDeploymentNodeKind`;function isSpecificationDeploymentNodeKind(i){return reflection.isInstance(i,SpecificationDeploymentNodeKind)}const SpecificationElementKind=`SpecificationElementKind`;function isSpecificationElementKind(i){return reflection.isInstance(i,SpecificationElementKind)}const SpecificationElementStringProperty=`SpecificationElementStringProperty`;function isSpecificationElementStringProperty(i){return reflection.isInstance(i,SpecificationElementStringProperty)}const SpecificationRelationshipKind=`SpecificationRelationshipKind`;function isSpecificationRelationshipKind(i){return reflection.isInstance(i,SpecificationRelationshipKind)}const SpecificationRelationshipStringProperty=`SpecificationRelationshipStringProperty`;function isSpecificationRelationshipStringProperty(i){return reflection.isInstance(i,SpecificationRelationshipStringProperty)}const SpecificationRule=`SpecificationRule`;function isSpecificationRule(i){return reflection.isInstance(i,SpecificationRule)}const SpecificationTag=`SpecificationTag`;function isSpecificationTag(i){return reflection.isInstance(i,SpecificationTag)}const StrictFqnElementRef=`StrictFqnElementRef`;function isStrictFqnElementRef(i){return reflection.isInstance(i,StrictFqnElementRef)}const StrictFqnRef=`StrictFqnRef`;function isStrictFqnRef(i){return reflection.isInstance(i,StrictFqnRef)}function isTag(i){return reflection.isInstance(i,`Tag`)}const TagRef=`TagRef`;function isTagRef(i){return reflection.isInstance(i,TagRef)}const Tags=`Tags`;function isTags(i){return reflection.isInstance(i,Tags)}const TextSizeProperty=`TextSizeProperty`;function isTextSizeProperty(i){return reflection.isInstance(i,TextSizeProperty)}const ViewRef=`ViewRef`,ViewRuleAutoLayout=`ViewRuleAutoLayout`;function isViewRuleAutoLayout(i){return reflection.isInstance(i,ViewRuleAutoLayout)}const ViewRuleGlobalPredicateRef=`ViewRuleGlobalPredicateRef`;function isViewRuleGlobalPredicateRef(i){return reflection.isInstance(i,ViewRuleGlobalPredicateRef)}const ViewRuleGlobalStyle=`ViewRuleGlobalStyle`;function isViewRuleGlobalStyle(i){return reflection.isInstance(i,ViewRuleGlobalStyle)}const ViewRuleGroup=`ViewRuleGroup`;function isViewRuleGroup(i){return reflection.isInstance(i,ViewRuleGroup)}const ViewRulePredicate=`ViewRulePredicate`;function isViewRulePredicate(i){return reflection.isInstance(i,ViewRulePredicate)}const ViewRuleRank=`ViewRuleRank`;function isViewRuleRank(i){return reflection.isInstance(i,ViewRuleRank)}const ViewRuleStyle=`ViewRuleStyle`;function isViewRuleStyle(i){return reflection.isInstance(i,ViewRuleStyle)}const ViewStringProperty=`ViewStringProperty`;function isViewStringProperty(i){return reflection.isInstance(i,ViewStringProperty)}const WhereBinaryExpression=`WhereBinaryExpression`;function isWhereBinaryExpression(i){return reflection.isInstance(i,WhereBinaryExpression)}const WhereElementKind=`WhereElementKind`;function isWhereElementKind(i){return reflection.isInstance(i,WhereElementKind)}const WhereElementNegation=`WhereElementNegation`;function isWhereElementNegation(i){return reflection.isInstance(i,WhereElementNegation)}const WhereElementTag=`WhereElementTag`;function isWhereElementTag(i){return reflection.isInstance(i,WhereElementTag)}const WhereRelationKind=`WhereRelationKind`;function isWhereRelationKind(i){return reflection.isInstance(i,WhereRelationKind)}const WhereRelationNegation=`WhereRelationNegation`;function isWhereRelationNegation(i){return reflection.isInstance(i,WhereRelationNegation)}const WhereRelationParticipantKind=`WhereRelationParticipantKind`;function isWhereRelationParticipantKind(i){return reflection.isInstance(i,WhereRelationParticipantKind)}const WhereRelationParticipantTag=`WhereRelationParticipantTag`;function isWhereRelationParticipantTag(i){return reflection.isInstance(i,WhereRelationParticipantTag)}const WhereRelationTag=`WhereRelationTag`;function isWhereRelationTag(i){return reflection.isInstance(i,WhereRelationTag)}const WildcardExpression=`WildcardExpression`;function isWildcardExpression(i){return reflection.isInstance(i,WildcardExpression)}const DynamicStepChain=`DynamicStepChain`;function isDynamicStepChain(i){return reflection.isInstance(i,DynamicStepChain)}const DynamicStepSingle=`DynamicStepSingle`;function isDynamicStepSingle(i){return reflection.isInstance(i,DynamicStepSingle)}var LikeC4AstReflection=class extends AbstractAstReflection{getAllTypes(){return[AbstractDynamicStep,AnyProperty,ArrowProperty,BorderProperty,ColorLiteral,ColorProperty,CustomColor,CustomElementProperties,CustomRelationProperties,DeployedInstance,DeployedInstanceBody,DeploymentElement,DeploymentNode,DeploymentNodeBody,DeploymentNodeKind,DeploymentNodeOrElementKind,DeploymentRelation,DeploymentRelationBody,DeploymentView,DeploymentViewBody,DeploymentViewRule,DeploymentViewRulePredicate,DeploymentViewRuleStyle,DirectedRelationExpr,DynamicStepChain,DynamicStepSingle,DynamicView,DynamicViewBody,DynamicViewDisplayVariantProperty,DynamicViewGlobalPredicateRef,DynamicViewIncludePredicate,DynamicViewParallelSteps,DynamicViewProperty,DynamicViewRef,DynamicViewRule,DynamicViewStep,Element,ElementBody,ElementKind,ElementKindExpression,ElementProperty,ElementRef,ElementStringProperty,ElementStyleProperty,ElementTagExpression,ElementView,ElementViewBody,ElementViewRef,ExpressionV2,Expressions,ExtendDeployment,ExtendDeploymentBody,ExtendElement,ExtendElementBody,ExtendElementProperty,ExtendRelation,ExtendRelationBody,ExtendRelationProperty,FqnExpr$2,FqnExprOrWhere,FqnExprOrWith,FqnExprWhere,FqnExprWith,FqnExpressions,FqnRef$2,FqnRefExpr,FqnReferenceable,GlobalDynamicPredicateGroup,GlobalPredicateGroup,GlobalStyle,GlobalStyleGroup,GlobalStyleId,Globals,HexColor,IconColorProperty,IconPositionProperty,IconProperty,IconSizeProperty,Imported,ImportsFromPoject,InOutRelationExpr,IncomingRelationExpr,LibIcon,LikeC4Grammar$1,LikeC4Lib,LikeC4View,LineProperty,LinkProperty,MarkdownOrString,MetadataArray,MetadataAttribute,MetadataBody,MetadataProperty,MetadataValue,Model,ModelDeployments,ModelReferenceable,ModelViews,MultipleProperty,NavigateToProperty,NotationProperty,NotesProperty,OpacityProperty,OutgoingRelationExpr,PaddingSizeProperty,RGBAColor,Referenceable,Relation,RelationBody,RelationExpr$1,RelationExprOrWhere,RelationExprOrWith,RelationExprWhere,RelationExprWith,RelationKindDotRef,RelationNavigateToProperty,RelationProperty,RelationStringProperty,RelationStyleProperty,RelationshipKind,RelationshipStyleProperty,ShapeProperty,ShapeSizeProperty,SizeProperty,SpecificationColor,SpecificationDeploymentNodeKind,SpecificationElementKind,SpecificationElementStringProperty,SpecificationRelationshipKind,SpecificationRelationshipStringProperty,SpecificationRule,SpecificationTag,StrictFqnElementRef,StrictFqnRef,StringProperty,StyleProperty,`Tag`,TagRef,Tags,TextSizeProperty,ViewProperty,ViewRef,ViewRule,ViewRuleAutoLayout,ViewRuleGlobalPredicateRef,ViewRuleGlobalStyle,ViewRuleGroup,ViewRulePredicate,ViewRuleRank,ViewRuleStyle,ViewRuleStyleOrGlobalRef,ViewStringProperty,WhereBinaryExpression,WhereElement,WhereElementExpression,WhereElementKind,WhereElementNegation,WhereElementTag,WhereExpression,WhereKindEqual,WhereRelation,WhereRelationExpression,WhereRelationKind,WhereRelationNegation,WhereRelationParticipantKind,WhereRelationParticipantTag,WhereRelationTag,WhereTagEqual,WildcardExpression]}computeIsSubtype(i,a){switch(i){case ArrowProperty:case LineProperty:return this.isSubtype(RelationshipStyleProperty,a);case BorderProperty:case IconColorProperty:case IconPositionProperty:case MultipleProperty:case OpacityProperty:case ShapeProperty:return this.isSubtype(StyleProperty,a);case ColorProperty:return this.isSubtype(RelationshipStyleProperty,a)||this.isSubtype(StyleProperty,a);case DeployedInstance:case DeploymentNode:return this.isSubtype(DeploymentElement,a)||this.isSubtype(Referenceable,a);case DeploymentNodeKind:case ElementKind:return this.isSubtype(DeploymentNodeOrElementKind,a);case DeploymentView:case DynamicView:case ElementView:return this.isSubtype(LikeC4View,a);case DeploymentViewRulePredicate:case DeploymentViewRuleStyle:return this.isSubtype(DeploymentViewRule,a);case DirectedRelationExpr:case IncomingRelationExpr:case InOutRelationExpr:case OutgoingRelationExpr:return this.isSubtype(RelationExpr$1,a);case DynamicStepChain:case DynamicStepSingle:return this.isSubtype(AbstractDynamicStep,a)||this.isSubtype(DynamicViewStep,a);case DynamicViewDisplayVariantProperty:return this.isSubtype(DynamicViewProperty,a);case DynamicViewGlobalPredicateRef:case DynamicViewIncludePredicate:return this.isSubtype(DynamicViewRule,a);case DynamicViewProperty:case ElementProperty:case RelationProperty:case StringProperty:return this.isSubtype(AnyProperty,a);case Element:return this.isSubtype(FqnReferenceable,a)||this.isSubtype(ModelReferenceable,a)||this.isSubtype(Referenceable,a);case ElementKindExpression:case ElementTagExpression:case FqnRefExpr:case WildcardExpression:return this.isSubtype(FqnExpr$2,a);case ElementStringProperty:return this.isSubtype(ElementProperty,a)||this.isSubtype(StringProperty,a);case ElementStyleProperty:return this.isSubtype(ElementProperty,a);case ExtendDeployment:case ExtendElement:case Referenceable:return this.isSubtype(FqnReferenceable,a);case FqnExpr$2:case FqnExprWhere:return this.isSubtype(FqnExprOrWhere,a);case FqnExprOrWhere:case FqnExprWith:return this.isSubtype(FqnExprOrWith,a);case FqnExprOrWith:case RelationExprOrWith:return this.isSubtype(ExpressionV2,a);case HexColor:case RGBAColor:return this.isSubtype(ColorLiteral,a);case IconProperty:return this.isSubtype(ElementProperty,a)||this.isSubtype(StyleProperty,a);case IconSizeProperty:case PaddingSizeProperty:case ShapeSizeProperty:case TextSizeProperty:return this.isSubtype(SizeProperty,a)||this.isSubtype(StyleProperty,a);case Imported:return this.isSubtype(ModelReferenceable,a)||this.isSubtype(Referenceable,a);case LinkProperty:return this.isSubtype(ElementProperty,a)||this.isSubtype(ExtendElementProperty,a)||this.isSubtype(ExtendRelationProperty,a)||this.isSubtype(RelationProperty,a)||this.isSubtype(ViewProperty,a);case MarkdownOrString:case MetadataArray:return this.isSubtype(MetadataValue,a);case MetadataAttribute:case NotationProperty:case NotesProperty:case SpecificationElementStringProperty:case SpecificationRelationshipStringProperty:return this.isSubtype(StringProperty,a);case MetadataBody:return this.isSubtype(MetadataProperty,a);case MetadataProperty:return this.isSubtype(ElementProperty,a)||this.isSubtype(ExtendElementProperty,a)||this.isSubtype(ExtendRelationProperty,a)||this.isSubtype(RelationProperty,a);case RelationExpr$1:case RelationExprWhere:return this.isSubtype(RelationExprOrWhere,a);case RelationExprOrWhere:case RelationExprWith:return this.isSubtype(RelationExprOrWith,a);case RelationNavigateToProperty:case RelationStyleProperty:return this.isSubtype(RelationProperty,a);case RelationStringProperty:return this.isSubtype(RelationProperty,a)||this.isSubtype(StringProperty,a);case ViewProperty:return this.isSubtype(AnyProperty,a)||this.isSubtype(DynamicViewProperty,a);case ViewRuleAutoLayout:return this.isSubtype(DeploymentViewRule,a)||this.isSubtype(DynamicViewRule,a)||this.isSubtype(ViewRule,a);case ViewRuleGlobalPredicateRef:case ViewRuleGroup:case ViewRulePredicate:case ViewRuleRank:return this.isSubtype(ViewRule,a);case ViewRuleGlobalStyle:case ViewRuleStyle:return this.isSubtype(ViewRuleStyleOrGlobalRef,a);case ViewRuleStyleOrGlobalRef:return this.isSubtype(DynamicViewRule,a)||this.isSubtype(ViewRule,a);case ViewStringProperty:return this.isSubtype(StringProperty,a)||this.isSubtype(ViewProperty,a);case WhereBinaryExpression:return this.isSubtype(WhereElementExpression,a)||this.isSubtype(WhereRelationExpression,a);case WhereElement:case WhereElementNegation:return this.isSubtype(WhereElementExpression,a);case WhereElementExpression:case WhereRelationExpression:return this.isSubtype(WhereExpression,a);case WhereElementKind:return this.isSubtype(WhereElement,a)||this.isSubtype(WhereKindEqual,a);case WhereElementTag:return this.isSubtype(WhereElement,a)||this.isSubtype(WhereTagEqual,a);case WhereRelation:case WhereRelationNegation:return this.isSubtype(WhereRelationExpression,a);case WhereRelationKind:case WhereRelationParticipantKind:return this.isSubtype(WhereKindEqual,a)||this.isSubtype(WhereRelation,a);case WhereRelationParticipantTag:case WhereRelationTag:return this.isSubtype(WhereRelation,a)||this.isSubtype(WhereTagEqual,a);default:return!1}}getReferenceType(i){let a=`${i.container.$type}:${i.property}`;switch(a){case`AbstractDynamicStep:kind`:case`DeploymentRelation:kind`:case`DynamicStepChain:kind`:case`DynamicStepSingle:kind`:case`ExtendRelation:kind`:case`OutgoingRelationExpr:kind`:case`Relation:kind`:case`RelationKindDotRef:kind`:case`WhereRelationKind:value`:return RelationshipKind;case`ColorProperty:customColor`:case`IconColorProperty:customColor`:return CustomColor;case`DeploymentNode:kind`:return DeploymentNodeKind;case`DynamicViewGlobalPredicateRef:predicate`:return GlobalDynamicPredicateGroup;case`DynamicViewRef:view`:return DynamicView;case`Element:kind`:case`ElementKindExpression:kind`:return ElementKind;case`ElementViewRef:view`:return ElementView;case`FqnRef:value`:case`StrictFqnRef:value`:return Referenceable;case`IconProperty:libicon`:return LibIcon;case`Imported:imported`:case`StrictFqnElementRef:el`:return Element;case`TagRef:tag`:return`Tag`;case`ViewRef:view`:return LikeC4View;case`ViewRuleGlobalPredicateRef:predicate`:return GlobalPredicateGroup;case`ViewRuleGlobalStyle:style`:return GlobalStyleId;case`WhereElementKind:value`:case`WhereRelationParticipantKind:value`:return DeploymentNodeOrElementKind;default:throw Error(`${a} is not a valid reference id.`)}}getTypeMetaData(i){switch(i){case AbstractDynamicStep:return{name:AbstractDynamicStep,properties:[{name:`custom`},{name:`dotKind`},{name:`kind`},{name:`target`},{name:`title`}]};case ArrowProperty:return{name:ArrowProperty,properties:[{name:`key`},{name:`value`}]};case BorderProperty:return{name:BorderProperty,properties:[{name:`key`},{name:`value`}]};case ColorProperty:return{name:ColorProperty,properties:[{name:`customColor`},{name:`key`},{name:`themeColor`}]};case CustomColor:return{name:CustomColor,properties:[{name:`name`}]};case CustomElementProperties:return{name:CustomElementProperties,properties:[{name:`props`,defaultValue:[]}]};case CustomRelationProperties:return{name:CustomRelationProperties,properties:[{name:`props`,defaultValue:[]}]};case DeployedInstance:return{name:DeployedInstance,properties:[{name:`body`},{name:`name`},{name:`summary`},{name:`target`},{name:`title`}]};case DeployedInstanceBody:return{name:DeployedInstanceBody,properties:[{name:`elements`,defaultValue:[]},{name:`props`,defaultValue:[]},{name:`tags`}]};case DeploymentNode:return{name:DeploymentNode,properties:[{name:`body`},{name:`kind`},{name:`name`},{name:`summary`},{name:`title`}]};case DeploymentNodeBody:return{name:DeploymentNodeBody,properties:[{name:`elements`,defaultValue:[]},{name:`props`,defaultValue:[]},{name:`tags`}]};case DeploymentNodeKind:return{name:DeploymentNodeKind,properties:[{name:`name`}]};case DeploymentRelation:return{name:DeploymentRelation,properties:[{name:`body`},{name:`description`},{name:`dotKind`},{name:`kind`},{name:`source`},{name:`tags`},{name:`target`},{name:`technology`},{name:`title`}]};case DeploymentRelationBody:return{name:DeploymentRelationBody,properties:[{name:`props`,defaultValue:[]},{name:`tags`}]};case DeploymentView:return{name:DeploymentView,properties:[{name:`body`},{name:`name`}]};case DeploymentViewBody:return{name:DeploymentViewBody,properties:[{name:`props`,defaultValue:[]},{name:`rules`,defaultValue:[]},{name:`tags`}]};case DeploymentViewRulePredicate:return{name:DeploymentViewRulePredicate,properties:[{name:`expr`},{name:`isInclude`,defaultValue:!1}]};case DeploymentViewRuleStyle:return{name:DeploymentViewRuleStyle,properties:[{name:`props`,defaultValue:[]},{name:`targets`}]};case DirectedRelationExpr:return{name:DirectedRelationExpr,properties:[{name:`source`},{name:`target`}]};case DynamicView:return{name:DynamicView,properties:[{name:`body`},{name:`name`}]};case DynamicViewBody:return{name:DynamicViewBody,properties:[{name:`props`,defaultValue:[]},{name:`rules`,defaultValue:[]},{name:`steps`,defaultValue:[]},{name:`tags`}]};case DynamicViewDisplayVariantProperty:return{name:DynamicViewDisplayVariantProperty,properties:[{name:`key`},{name:`value`}]};case DynamicViewGlobalPredicateRef:return{name:DynamicViewGlobalPredicateRef,properties:[{name:`predicate`}]};case DynamicViewIncludePredicate:return{name:DynamicViewIncludePredicate,properties:[{name:`exprs`}]};case DynamicViewParallelSteps:return{name:DynamicViewParallelSteps,properties:[{name:`steps`,defaultValue:[]}]};case DynamicViewRef:return{name:DynamicViewRef,properties:[{name:`view`}]};case Element:return{name:Element,properties:[{name:`body`},{name:`kind`},{name:`name`},{name:`props`,defaultValue:[]}]};case ElementBody:return{name:ElementBody,properties:[{name:`elements`,defaultValue:[]},{name:`props`,defaultValue:[]},{name:`tags`}]};case ElementKind:return{name:ElementKind,properties:[{name:`name`}]};case ElementKindExpression:return{name:ElementKindExpression,properties:[{name:`isEqual`,defaultValue:!1},{name:`kind`}]};case ElementRef:return{name:ElementRef,properties:[{name:`modelElement`}]};case ElementStringProperty:return{name:ElementStringProperty,properties:[{name:`key`},{name:`value`}]};case ElementStyleProperty:return{name:ElementStyleProperty,properties:[{name:`key`},{name:`props`,defaultValue:[]}]};case ElementTagExpression:return{name:ElementTagExpression,properties:[{name:`isEqual`,defaultValue:!1},{name:`tag`}]};case ElementView:return{name:ElementView,properties:[{name:`body`},{name:`extends`},{name:`name`},{name:`viewOf`}]};case ElementViewBody:return{name:ElementViewBody,properties:[{name:`props`,defaultValue:[]},{name:`rules`,defaultValue:[]},{name:`tags`}]};case ElementViewRef:return{name:ElementViewRef,properties:[{name:`view`}]};case Expressions:return{name:Expressions,properties:[{name:`prev`},{name:`value`}]};case ExtendDeployment:return{name:ExtendDeployment,properties:[{name:`body`},{name:`deploymentNode`}]};case ExtendDeploymentBody:return{name:ExtendDeploymentBody,properties:[{name:`elements`,defaultValue:[]},{name:`props`,defaultValue:[]},{name:`tags`}]};case ExtendElement:return{name:ExtendElement,properties:[{name:`body`},{name:`element`}]};case ExtendElementBody:return{name:ExtendElementBody,properties:[{name:`elements`,defaultValue:[]},{name:`props`,defaultValue:[]},{name:`tags`}]};case ExtendRelation:return{name:ExtendRelation,properties:[{name:`body`},{name:`dotKind`},{name:`kind`},{name:`source`},{name:`target`},{name:`title`}]};case ExtendRelationBody:return{name:ExtendRelationBody,properties:[{name:`props`,defaultValue:[]},{name:`tags`}]};case FqnExpressions:return{name:FqnExpressions,properties:[{name:`prev`},{name:`value`}]};case FqnExprWhere:return{name:FqnExprWhere,properties:[{name:`subject`},{name:`where`}]};case FqnExprWith:return{name:FqnExprWith,properties:[{name:`custom`},{name:`subject`}]};case FqnRef$2:return{name:FqnRef$2,properties:[{name:`parent`},{name:`value`}]};case FqnRefExpr:return{name:FqnRefExpr,properties:[{name:`ref`},{name:`selector`}]};case GlobalDynamicPredicateGroup:return{name:GlobalDynamicPredicateGroup,properties:[{name:`name`},{name:`predicates`,defaultValue:[]}]};case GlobalPredicateGroup:return{name:GlobalPredicateGroup,properties:[{name:`name`},{name:`predicates`,defaultValue:[]}]};case Globals:return{name:Globals,properties:[{name:`name`},{name:`predicates`,defaultValue:[]},{name:`styles`,defaultValue:[]}]};case GlobalStyle:return{name:GlobalStyle,properties:[{name:`id`},{name:`props`,defaultValue:[]},{name:`targets`}]};case GlobalStyleGroup:return{name:GlobalStyleGroup,properties:[{name:`id`},{name:`styles`,defaultValue:[]}]};case GlobalStyleId:return{name:GlobalStyleId,properties:[{name:`name`}]};case HexColor:return{name:HexColor,properties:[{name:`hex`}]};case IconColorProperty:return{name:IconColorProperty,properties:[{name:`customColor`},{name:`key`},{name:`themeColor`}]};case IconPositionProperty:return{name:IconPositionProperty,properties:[{name:`key`},{name:`value`}]};case IconProperty:return{name:IconProperty,properties:[{name:`key`},{name:`libicon`},{name:`value`}]};case IconSizeProperty:return{name:IconSizeProperty,properties:[{name:`key`},{name:`value`}]};case Imported:return{name:Imported,properties:[{name:`imported`},{name:`prev`}]};case ImportsFromPoject:return{name:ImportsFromPoject,properties:[{name:`imports`},{name:`project`}]};case IncomingRelationExpr:return{name:IncomingRelationExpr,properties:[{name:`to`}]};case InOutRelationExpr:return{name:InOutRelationExpr,properties:[{name:`inout`}]};case LibIcon:return{name:LibIcon,properties:[{name:`name`}]};case LikeC4Grammar$1:return{name:LikeC4Grammar$1,properties:[{name:`deployments`,defaultValue:[]},{name:`globals`,defaultValue:[]},{name:`imports`,defaultValue:[]},{name:`likec4lib`,defaultValue:[]},{name:`models`,defaultValue:[]},{name:`specifications`,defaultValue:[]},{name:`views`,defaultValue:[]}]};case LikeC4Lib:return{name:LikeC4Lib,properties:[{name:`icons`,defaultValue:[]}]};case LineProperty:return{name:LineProperty,properties:[{name:`key`},{name:`value`}]};case LinkProperty:return{name:LinkProperty,properties:[{name:`key`},{name:`title`},{name:`value`}]};case MarkdownOrString:return{name:MarkdownOrString,properties:[{name:`markdown`},{name:`text`}]};case MetadataArray:return{name:MetadataArray,properties:[{name:`values`,defaultValue:[]}]};case MetadataAttribute:return{name:MetadataAttribute,properties:[{name:`key`},{name:`value`}]};case MetadataBody:return{name:MetadataBody,properties:[{name:`props`,defaultValue:[]}]};case Model:return{name:Model,properties:[{name:`elements`,defaultValue:[]},{name:`name`}]};case ModelDeployments:return{name:ModelDeployments,properties:[{name:`elements`,defaultValue:[]},{name:`name`}]};case ModelViews:return{name:ModelViews,properties:[{name:`folder`},{name:`name`},{name:`styles`,defaultValue:[]},{name:`views`,defaultValue:[]}]};case MultipleProperty:return{name:MultipleProperty,properties:[{name:`key`},{name:`value`,defaultValue:!1}]};case NavigateToProperty:return{name:NavigateToProperty,properties:[{name:`key`},{name:`value`}]};case NotationProperty:return{name:NotationProperty,properties:[{name:`key`},{name:`value`}]};case NotesProperty:return{name:NotesProperty,properties:[{name:`key`},{name:`value`}]};case OpacityProperty:return{name:OpacityProperty,properties:[{name:`key`},{name:`value`}]};case OutgoingRelationExpr:return{name:OutgoingRelationExpr,properties:[{name:`dotKind`},{name:`from`},{name:`isBidirectional`,defaultValue:!1},{name:`kind`}]};case PaddingSizeProperty:return{name:PaddingSizeProperty,properties:[{name:`key`},{name:`value`}]};case Relation:return{name:Relation,properties:[{name:`body`},{name:`description`},{name:`dotKind`},{name:`kind`},{name:`source`},{name:`tags`},{name:`target`},{name:`technology`},{name:`title`}]};case RelationBody:return{name:RelationBody,properties:[{name:`props`,defaultValue:[]},{name:`tags`}]};case RelationExprWhere:return{name:RelationExprWhere,properties:[{name:`subject`},{name:`where`}]};case RelationExprWith:return{name:RelationExprWith,properties:[{name:`custom`},{name:`subject`}]};case RelationKindDotRef:return{name:RelationKindDotRef,properties:[{name:`kind`}]};case RelationNavigateToProperty:return{name:RelationNavigateToProperty,properties:[{name:`key`},{name:`value`}]};case RelationshipKind:return{name:RelationshipKind,properties:[{name:`name`}]};case RelationStringProperty:return{name:RelationStringProperty,properties:[{name:`key`},{name:`value`}]};case RelationStyleProperty:return{name:RelationStyleProperty,properties:[{name:`key`},{name:`props`,defaultValue:[]}]};case RGBAColor:return{name:RGBAColor,properties:[{name:`alpha`},{name:`blue`},{name:`green`},{name:`red`}]};case ShapeProperty:return{name:ShapeProperty,properties:[{name:`key`},{name:`value`}]};case ShapeSizeProperty:return{name:ShapeSizeProperty,properties:[{name:`key`},{name:`value`}]};case SpecificationColor:return{name:SpecificationColor,properties:[{name:`color`},{name:`name`}]};case SpecificationDeploymentNodeKind:return{name:SpecificationDeploymentNodeKind,properties:[{name:`kind`},{name:`props`,defaultValue:[]},{name:`tags`}]};case SpecificationElementKind:return{name:SpecificationElementKind,properties:[{name:`kind`},{name:`props`,defaultValue:[]},{name:`tags`}]};case SpecificationElementStringProperty:return{name:SpecificationElementStringProperty,properties:[{name:`key`},{name:`value`}]};case SpecificationRelationshipKind:return{name:SpecificationRelationshipKind,properties:[{name:`kind`},{name:`props`,defaultValue:[]}]};case SpecificationRelationshipStringProperty:return{name:SpecificationRelationshipStringProperty,properties:[{name:`key`},{name:`value`}]};case SpecificationRule:return{name:SpecificationRule,properties:[{name:`colors`,defaultValue:[]},{name:`deploymentNodes`,defaultValue:[]},{name:`elements`,defaultValue:[]},{name:`name`},{name:`relationships`,defaultValue:[]},{name:`tags`,defaultValue:[]}]};case SpecificationTag:return{name:SpecificationTag,properties:[{name:`color`},{name:`tag`}]};case StrictFqnElementRef:return{name:StrictFqnElementRef,properties:[{name:`el`},{name:`parent`}]};case StrictFqnRef:return{name:StrictFqnRef,properties:[{name:`parent`},{name:`value`}]};case`Tag`:return{name:`Tag`,properties:[{name:`name`}]};case TagRef:return{name:TagRef,properties:[{name:`tag`}]};case Tags:return{name:Tags,properties:[{name:`prev`},{name:`values`,defaultValue:[]}]};case TextSizeProperty:return{name:TextSizeProperty,properties:[{name:`key`},{name:`value`}]};case ViewRef:return{name:ViewRef,properties:[{name:`view`}]};case ViewRuleAutoLayout:return{name:ViewRuleAutoLayout,properties:[{name:`direction`},{name:`nodeSep`},{name:`rankSep`}]};case ViewRuleGlobalPredicateRef:return{name:ViewRuleGlobalPredicateRef,properties:[{name:`predicate`}]};case ViewRuleGlobalStyle:return{name:ViewRuleGlobalStyle,properties:[{name:`style`}]};case ViewRuleGroup:return{name:ViewRuleGroup,properties:[{name:`groupRules`,defaultValue:[]},{name:`props`,defaultValue:[]},{name:`title`}]};case ViewRulePredicate:return{name:ViewRulePredicate,properties:[{name:`exprs`},{name:`isInclude`,defaultValue:!1}]};case ViewRuleRank:return{name:ViewRuleRank,properties:[{name:`targets`},{name:`value`}]};case ViewRuleStyle:return{name:ViewRuleStyle,properties:[{name:`props`,defaultValue:[]},{name:`targets`}]};case ViewStringProperty:return{name:ViewStringProperty,properties:[{name:`key`},{name:`value`}]};case WhereBinaryExpression:return{name:WhereBinaryExpression,properties:[{name:`left`},{name:`operator`},{name:`right`}]};case WhereElementKind:return{name:WhereElementKind,properties:[{name:`not`,defaultValue:!1},{name:`operator`},{name:`value`}]};case WhereElementNegation:return{name:WhereElementNegation,properties:[{name:`value`}]};case WhereElementTag:return{name:WhereElementTag,properties:[{name:`not`,defaultValue:!1},{name:`operator`},{name:`value`}]};case WhereRelationKind:return{name:WhereRelationKind,properties:[{name:`not`,defaultValue:!1},{name:`operator`},{name:`value`}]};case WhereRelationNegation:return{name:WhereRelationNegation,properties:[{name:`value`}]};case WhereRelationParticipantKind:return{name:WhereRelationParticipantKind,properties:[{name:`not`,defaultValue:!1},{name:`operator`},{name:`participant`},{name:`value`}]};case WhereRelationParticipantTag:return{name:WhereRelationParticipantTag,properties:[{name:`not`,defaultValue:!1},{name:`operator`},{name:`participant`},{name:`value`}]};case WhereRelationTag:return{name:WhereRelationTag,properties:[{name:`not`,defaultValue:!1},{name:`operator`},{name:`value`}]};case WildcardExpression:return{name:WildcardExpression,properties:[{name:`isWildcard`,defaultValue:!1}]};case DynamicStepChain:return{name:DynamicStepChain,properties:[{name:`custom`},{name:`dotKind`},{name:`kind`},{name:`source`},{name:`target`},{name:`title`}]};case DynamicStepSingle:return{name:DynamicStepSingle,properties:[{name:`custom`},{name:`dotKind`},{name:`isBackward`,defaultValue:!1},{name:`kind`},{name:`source`},{name:`target`},{name:`title`}]};default:return{name:i,properties:[]}}}};const reflection=new LikeC4AstReflection;let loadedLikeC4Grammar;const LikeC4Grammar=()=>loadedLikeC4Grammar??=loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"LikeC4","rules":[{"$type":"ParserRule","entry":true,"name":"LikeC4Grammar","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"imports","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"specifications","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"models","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"globals","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@122"},"arguments":[]}},{"$type":"Assignment","feature":"deployments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@108"},"arguments":[]}},{"$type":"Assignment","feature":"likec4lib","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4Lib","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"likec4lib"},{"$type":"Keyword","value":"{"},{"$type":"Keyword","value":"icons"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"icons","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LibIcon","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@160"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tag","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColor","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRule","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"specification"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"relationships","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"colors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"deploymentNodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"element"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"description"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"},{"$type":"Keyword","value":"summary"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationDeploymentNodeKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deploymentNode"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationTag","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"tag"},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Group","elements":[{"$type":"Keyword","value":"color"},{"$type":"Assignment","feature":"color","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationColor","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"color"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"color","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"relationship"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ImportsFromPoject","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"import"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"imports","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Keyword","value":"}"}]},{"$type":"Assignment","feature":"imports","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Keyword","value":"from"},{"$type":"Assignment","feature":"project","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Imported","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"imported","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@20"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Imported"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"imported","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@20"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tags","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Tags"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Model","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"model"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Element","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@182"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}}]}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"description"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"summary"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElement","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"extend"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElementProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendRelation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"extend"},{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"dotKind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Keyword","value":"->"}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendRelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendRelationProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementRef","definition":{"$type":"Assignment","feature":"modelElement","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StrictFqnElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@20"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"StrictFqnElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@179"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@20"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@1"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@179"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@1"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StrictFqnRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@1"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"StrictFqnRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@179"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@1"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Relation","parameters":[{"$type":"Parameter","name":"isExplicit"}],"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","guardCondition":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@34/parameters@0"}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}}]},{"$type":"Group","guardCondition":{"$type":"Negation","value":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@34/parameters@0"}}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},"cardinality":"?"}]}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"dotKind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Keyword","value":"->"}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"description","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"wildcard":false},{"$type":"ParserRule","name":"RelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataProperty","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"metadata"},{"$type":"RuleCall","rule":{"$ref":"#/rules@40"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataAttribute","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataValue","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataArray","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelViews","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"views"}},{"$type":"Assignment","feature":"folder","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4ViewRule","returnType":{"$ref":"#/types@2"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@47"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@117"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"extends"},{"$type":"Assignment","feature":"extends","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@49"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"of"},{"$type":"Assignment","feature":"viewOf","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}}]}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamic"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@2"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@46"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@47"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]},"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@63"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]}]}},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@62"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@54"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewDisplayVariantProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"variant"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@56"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewLayoutDirection","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"TopBottom"},{"$type":"Keyword","value":"LeftRight"},{"$type":"Keyword","value":"BottomTop"},{"$type":"Keyword","value":"RightLeft"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@68"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@69"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@75"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleRank","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"rank"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]}},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RankValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"same"},{"$type":"Keyword","value":"min"},{"$type":"Keyword","value":"max"},{"$type":"Keyword","value":"source"},{"$type":"Keyword","value":"sink"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@130"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"groupRules","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@68"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@75"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewParallelSteps","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"parallel"},{"$type":"Keyword","value":"par"}]},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"DynamicViewStepTarget","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@79"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewStep","returnType":{"$ref":"#/types@5"},"definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@66"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicStepChain","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@67"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","type":{"$ref":"#/interfaces@2"},"feature":"source","operator":"="},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"dotKind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicStepSingle","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBackward","operator":"?=","terminal":{"$type":"Keyword","value":"<-"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"dotKind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRulePredicate","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isInclude","operator":"?=","terminal":{"$type":"Keyword","value":"include"}},{"$type":"Keyword","value":"exclude"}]},{"$type":"Assignment","feature":"exprs","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@123"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewIncludePredicate","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"exprs","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@124"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"style","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@125"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyleOrGlobalRef","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleAutoLayout","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"autoLayout"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@57"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"rankSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]}},{"$type":"Assignment","feature":"nodeSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotationProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notation"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotesProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notes"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomElementProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@80"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@77"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomRelationProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@77"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationNavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Expressions","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@83"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Expressions"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@83"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExpressionV2","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@86"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@84"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExprOrWith","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@85"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnExprWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@78"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExprOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnExprWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExprOrWith","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationExprWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@79"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExprOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationExprWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpr","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementTagExpression"}},{"$type":"Keyword","value":"element.tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementKindExpression"}},{"$type":"Keyword","value":"element.kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRefExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"ref","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}},{"$type":"Assignment","feature":"selector","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@176"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@177"},"arguments":[]}]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpr","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@91"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@93"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@92"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpr"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@94"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpr"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"dotKind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpressions","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnExpressions"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@97"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementOr","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@98"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@98"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementAnd","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@99"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@99"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementPrimary","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElement","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@6"},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@103"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationOr","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@104"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@104"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationAnd","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@105"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@105"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationPrimary","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@106"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@107"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelation","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationParticipantTag"}},{"$type":"Assignment","feature":"participant","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@179"},"arguments":[]},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationParticipantKind"}},{"$type":"Assignment","feature":"participant","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@179"},"arguments":[]},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelDeployments","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"deployment"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNode","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@182"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}]}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Assignment","feature":"summary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstance","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@182"},"arguments":[]}],"cardinality":"?"},{"$type":"Keyword","value":"instanceOf"},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Assignment","feature":"summary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@112"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstanceBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendDeployment","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"extend"},{"$type":"Assignment","feature":"deploymentNode","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@114"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendDeploymentBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelation","parameters":[{"$type":"Parameter","name":"isExplicit"}],"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","guardCondition":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@115/parameters@0"}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}}]},{"$type":"Group","guardCondition":{"$type":"Negation","value":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@115/parameters@0"}}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},"cardinality":"?"}]}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"dotKind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@150"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Keyword","value":"->"}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"description","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@116"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@118"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@119"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@121"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@120"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@75"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicate","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isInclude","operator":"?=","terminal":{"$type":"Keyword","value":"include"}},{"$type":"Keyword","value":"exclude"}]},{"$type":"Assignment","feature":"expr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Globals","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"global"}},{"$type":"Keyword","value":"{"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@123"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]}]},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"predicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@68"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalDynamicPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamicPredicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleId","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]}},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"styleGroup"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LinkProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"link"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@161"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ColorProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"color"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"themeColor","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]}},{"$type":"Assignment","feature":"customColor","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OpacityProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"opacity"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@183"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MultipleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"multiple"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@171"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"icon"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"libicon","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@160"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"RuleCall","rule":{"$ref":"#/rules@161"},"arguments":[]}]}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconColorProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"iconColor"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"themeColor","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]}},{"$type":"Assignment","feature":"customColor","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"iconSize"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconPositionValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"left"},{"$type":"Keyword","value":"right"},{"$type":"Keyword","value":"top"},{"$type":"Keyword","value":"bottom"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconPositionProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"iconPosition"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ShapeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"shape"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderStyleValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@151"},"arguments":[]},{"$type":"Keyword","value":"none"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"border"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SizeValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"xs"},{"$type":"Keyword","value":"sm"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"lg"},{"$type":"Keyword","value":"xl"},{"$type":"Keyword","value":"xsmall"},{"$type":"Keyword","value":"small"},{"$type":"Keyword","value":"medium"},{"$type":"Keyword","value":"large"},{"$type":"Keyword","value":"xlarge"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ShapeSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"size"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PaddingSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"padding"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TextSizeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"textSize"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@130"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@133"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@141"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@142"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@134"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"line"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@151"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"head"},{"$type":"Keyword","value":"tail"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@152"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipStyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TagRef","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@178"},"arguments":[]},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationKindDotRef","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@180"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineOptions","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"solid"},{"$type":"Keyword","value":"dashed"},{"$type":"Keyword","value":"dotted"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"Keyword","value":"normal"},{"$type":"Keyword","value":"onormal"},{"$type":"Keyword","value":"dot"},{"$type":"Keyword","value":"odot"},{"$type":"Keyword","value":"diamond"},{"$type":"Keyword","value":"odiamond"},{"$type":"Keyword","value":"crow"},{"$type":"Keyword","value":"open"},{"$type":"Keyword","value":"vee"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewDisplayVariantValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"diagram"},{"$type":"Keyword","value":"sequence"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ThemeColor","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"primary"},{"$type":"Keyword","value":"secondary"},{"$type":"Keyword","value":"muted"},{"$type":"Keyword","value":"slate"},{"$type":"Keyword","value":"blue"},{"$type":"Keyword","value":"indigo"},{"$type":"Keyword","value":"sky"},{"$type":"Keyword","value":"red"},{"$type":"Keyword","value":"gray"},{"$type":"Keyword","value":"green"},{"$type":"Keyword","value":"amber"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementShape","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rectangle"},{"$type":"Keyword","value":"component"},{"$type":"Keyword","value":"person"},{"$type":"Keyword","value":"browser"},{"$type":"Keyword","value":"mobile"},{"$type":"Keyword","value":"cylinder"},{"$type":"Keyword","value":"storage"},{"$type":"Keyword","value":"queue"},{"$type":"Keyword","value":"bucket"},{"$type":"Keyword","value":"document"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Participant","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"source"},{"$type":"Keyword","value":"target"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ColorLiteral","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@159"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RGBAColor","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rgba"},{"$type":"Keyword","value":"rgb"}]},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"red","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]}},{"$type":"Keyword","value":",","cardinality":"?"},{"$type":"Assignment","feature":"green","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]}},{"$type":"Keyword","value":",","cardinality":"?"},{"$type":"Assignment","feature":"blue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]}},{"$type":"Keyword","value":",","cardinality":"?"},{"$type":"Assignment","feature":"alpha","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@186"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@183"},"arguments":[]}]},"cardinality":"?"},{"$type":"Keyword","value":")"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"HexColor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@178"},"arguments":[]},{"$type":"Assignment","feature":"hex","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@189"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@187"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]}]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconId","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@172"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Uri","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@173"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@174"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@175"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MarkdownOrString","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"markdown","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@184"},"arguments":[]}},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@185"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorId","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@152"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@151"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Id","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@188"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@152"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@151"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"},{"$type":"Keyword","value":"group"},{"$type":"Keyword","value":"node"},{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"instance"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EqOperator","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@182"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@181"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"is"}},{"$type":"Assignment","feature":"not","operator":"?=","terminal":{"$type":"Keyword","value":"not"},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"IsEqual","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isEqual","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@182"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@181"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","hidden":true,"name":"BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/[\\\\r\\\\n]+/"},"fragment":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"RegexToken","regex":"/\\\\b(true|false)\\\\b/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LIB_ICON","definition":{"$type":"RegexToken","regex":"/(aws|azure|bootstrap|gcp|tech):[-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_WITH_SCHEMA","definition":{"$type":"RegexToken","regex":"/\\\\w+:\\\\/{2}\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_RELATIVE","definition":{"$type":"RegexToken","regex":"/\\\\.{0,2}\\\\/[^\\\\/]\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_ALIAS","definition":{"$type":"RegexToken","regex":"/@[a-zA-Z0-9_-]*\\\\/[^\\\\s]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotUnderscore","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\._(?![_a-zA-Z])/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotWildcard","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\.\\\\*{1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hash","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"#"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"StickyDot","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\./"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Dot","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"."}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NotEqual","definition":{"$type":"RegexToken","regex":"/\\\\!\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Eq","definition":{"$type":"RegexToken","regex":"/\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Percent","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+%/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"MarkdownString","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalGroup","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"'''"}},{"$type":"UntilToken","terminal":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"'''"}}}]},{"$type":"TerminalGroup","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"\\"\\"\\""}},{"$type":"UntilToken","terminal":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"\\"\\"\\""}}}]}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"String","definition":{"$type":"RegexToken","regex":"/\\"(?:[^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'(?:[^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Float","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+\\\\.\\\\d+\\\\b/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Number","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+\\\\b/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"IdTerminal","definition":{"$type":"RegexToken","regex":"/[_]*[a-zA-Z][-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hex","definition":{"$type":"RegexToken","regex":"/[a-fA-F0-9]{3,}(?![-_g-zG-Z])/"},"fragment":false,"hidden":false}],"types":[{"$type":"Type","name":"ModelReferenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@20"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}}]}},{"$type":"Type","name":"Referenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@109"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@111"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@20"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}}]}},{"$type":"Type","name":"LikeC4View","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@46"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@47"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@117"}}]}},{"$type":"Type","name":"StringProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@23"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@56"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@37"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@41"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@10"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@76"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@77"}}]}},{"$type":"Type","name":"AnyProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/types@3"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@55"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@53"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@22"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@36"}}]}},{"$type":"Type","name":"DynamicViewStep","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}},{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}]}},{"$type":"Type","name":"DeploymentNodeOrElementKind","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@3"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@7"}}]}},{"$type":"Type","name":"WhereTagEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@101/definition/elements@0/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@107/definition/elements@0/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@107/definition/elements@2/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereKindEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@101/definition/elements@1/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@107/definition/elements@1/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@107/definition/elements@3/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereExpression","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@96"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@102"}}]}},{"$type":"Type","name":"DeploymentElement","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@109"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@111"}}]}},{"$type":"Type","name":"FqnReferenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/types@1"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@20"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@24"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@113"}}]}},{"$type":"Type","name":"SizeProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@141"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@142"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@143"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@134"}}]}}],"interfaces":[{"$type":"Interface","name":"AbstractDynamicStep","attributes":[{"$type":"TypeAttribute","name":"kind","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@5"}}}},{"$type":"TypeAttribute","name":"dotKind","isOptional":true,"type":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@150"}}},{"$type":"TypeAttribute","name":"target","type":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@30"}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"custom","isOptional":true,"type":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@79"}}}],"superTypes":[]},{"$type":"Interface","name":"DynamicStepSingle","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"source","type":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@30"}},"isOptional":false},{"$type":"TypeAttribute","name":"isBackward","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"boolean"}}]},{"$type":"Interface","name":"DynamicStepChain","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"source","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}},{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}]},"isOptional":false}]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"usedGrammars":[]}`),LikeC4LanguageMetaData={languageId:`likec4`,fileExtensions:[`.c4`,`.likec4`,`.like-c4`],caseInsensitive:!1,mode:`production`},parserConfig={skipValidations:!0,recoveryEnabled:!0,nodeLocationTracking:`full`},LikeC4GeneratedSharedModule={AstReflection:()=>new LikeC4AstReflection},LikeC4GeneratedModule={Grammar:()=>LikeC4Grammar(),LanguageMetaData:()=>LikeC4LanguageMetaData,parser:{ParserConfig:()=>parserConfig}};function hasLikeC4Ext(i){return LikeC4LanguageMetaData.fileExtensions.some(a=>i!==a&&i.endsWith(a))}function excludeNodeModules(i){return[`node_modules`,`.git`,`.svn`,`.yarn`,`.pnpm`].includes(i)}const compare$2=compareNaturalHierarchically(`/`);function ensureOrder$1(i,a){return compare$2(i.uri.path,a.uri.path)}const logger$15=logger$16.getChild(`chokidar`),WithChokidarWatcher={fileSystemWatcher:i=>new ChokidarFileSystemWatcher(i)},isAnyLikeC4File=i=>{let a=basename(i);return hasLikeC4Ext(a)||isLikeC4Config(a)||isManualLayoutFile(a)};var ChokidarFileSystemWatcher=class{watcher;queue=new PQueue({concurrency:1,timeout:5e3});constructor(i){this.services=i}watch(i){if(this.watcher){logger$15.debug`add watching folder: ${i}`,this.watcher.add(i);return}this.watcher=this.createWatcher(i)}async dispose(){if(this.watcher){let i=this.watcher;this.watcher=void 0,await i.close()}}createWatcher(i){logger$15.debug`create watcher for folder: ${i}`;let a=chokidar.watch(i,{ignored:[i=>i.includes(`node_modules`)||i.includes(`.git`),(i,a)=>!!a?.isFile()&&!isAnyLikeC4File(i)],followSymlinks:!0,ignoreInitial:!0}),o=(i,a)=>{a?.isDirectory()||this.enqueueFileOp(`addOrChange: `+i,async()=>{await this.onAddOrChange(i)})},s=(i,a)=>{a?.isDirectory()||this.enqueueFileOp(`remove: `+i,async()=>{await this.onRemove(i)})};return a.on(`add`,o).on(`change`,o).on(`unlink`,s).on(`unlinkDir`,i=>{this.enqueueFileOp(`removeDir: `+i,async()=>{await this.onRemoveDir(i)})}),a}enqueueFileOp(i,a){this.queue.add(async()=>{try{await a()}catch(a){logger$15.warn(`Failed on {fileop}`,{fileop:i,error:a})}}).catch(a=>{logger$15.error(`Error on {fileop}`,{fileop:i,error:a})})}async onAddOrChange(i){let a=this.services.workspace,o=basename(i),s=URI.file(i);switch(!0){case isLikeC4Config(o):logger$15.debug`project file changed: ${i}`,a.ManualLayouts.clearCaches(),await a.ProjectsManager.registerConfigFile(s);break;case hasLikeC4Ext(o):logger$15.debug`file changed: ${i}`,await a.DocumentBuilder.update([s],[]);break;case isManualLayoutFile(o):{logger$15.debug`manual layout file changed: ${i}`,a.ManualLayouts.clearCaches();let o=a.ProjectsManager.ownerProjectId(s);await a.ProjectsManager.rebuildProject(o);break}default:logger$15.warn`Unknown file change: ${i}`}}async onRemove(i){let a=this.services.workspace,o=basename(i),s=URI.file(i);switch(!0){case isLikeC4Config(o):logger$15.debug`project file removed: ${i}`,a.ManualLayouts.clearCaches(),await a.ProjectsManager.reloadProjects();break;case hasLikeC4Ext(o):logger$15.debug`file removed: ${i}`,await a.DocumentBuilder.update([],[s]);break;case isManualLayoutFile(o):{logger$15.debug`manual layout file removed: ${i}`;let o=a.ProjectsManager.ownerProjectId(s);a.ManualLayouts.clearCaches(),await a.ProjectsManager.rebuildProject(o);break}default:logger$15.warn`Unknown file removal: ${i}`}}async onRemoveDir(i){logger$15.debug`directory removed: ${i}`;let a=this.services.workspace;a.ProjectsManager.findOverlaped(i).length>0&&(a.ManualLayouts.clearCaches(),await a.ProjectsManager.reloadProjects())}};const logger$14=logger$16.getChild(`filesystem`);function isLikeC4ConfigFile(i,a=!1){return!a&&isLikeC4Config(basename(i))}function isLikeC4File(i,a=!1){return!a&&hasLikeC4Ext(basename(i))}const WithFileSystem=(i=!0)=>({fileSystemProvider:()=>new SymLinkTraversingFileSystemProvider,...i?WithChokidarWatcher:NoFileSystemWatcher});var SymLinkTraversingFileSystemProvider=class extends NodeFileSystemProvider{async readFile(i){if(isLikeC4Builtin(i))return Promise.resolve(LibIcons);try{return await super.readFile(i)}catch(a){return logger$14.warn(`Failed to read file ${i.fsPath}`,{error:a}),``}}async readDirectory(i,a){let o=a?.recursive??!0,s=a?.maxDepth??1/0,c=[];try{let a=new fdir().withSymlinks({resolvePaths:!1}).exclude(excludeNodeModules).withFullPaths().filter(isLikeC4File);o?s!==1/0&&(a=a.withMaxDepth(s)):a=a.withMaxDepth(1);let l=await a.crawl(i.fsPath).withPromise();for(let i of l)c.push({isFile:!0,isDirectory:!1,uri:URI.file(i)})}catch(a){logger$14.warn(`Failed to read directory ${i.fsPath}`,{error:a})}return c.sort(ensureOrder$1)}async scanProjectFiles(i){return await this.scanDirectory(i,isLikeC4ConfigFile)}async scanDirectory(i,a){let o=[];try{let s=await new fdir().withSymlinks({resolvePaths:!1}).exclude(excludeNodeModules).withFullPaths().filter(a).crawl(i.fsPath).withPromise();for(let i of s)o.push({isFile:!0,isDirectory:!1,uri:URI.file(i)})}catch(a){logger$14.warn(`Failed to scan directory {path}`,{path:i.fsPath,error:a})}return o}async loadProjectConfig(i){return await loadConfig(i)}async writeFile(i,a){let o=dirname(i.fsPath),s=statSync(o,{throwIfNoEntry:!1});if(s?.isFile())throw Error(`Cannot create directory ${o} because a file with the same name exists.`);return s||(logger$14.debug(`creating directory {path}`,{path:o}),mkdirSync(o,{recursive:!0})),logger$14.debug(`writing file {path}`,{path:i.fsPath}),await writeFile(i.fsPath,a,{encoding:`utf-8`})}async deleteFile(i){try{let a=i.fsPath,o=statSync(a,{throwIfNoEntry:!1});return o?.isFile()||o?.isSymbolicLink()?(await unlink(a),logger$14.debug(`deleted file {path}`,{path:a}),!0):(logger$14.warn(`deleteFile failed: {path} does not exist, or is not a file`,{path:a}),!1)}catch(a){logger$14.warn(`Failed to delete file ${i.fsPath}`,{error:a})}return!1}};const containerMargin={top:50,right:40,bottom:40,left:40};function safeApplyLayout(i,a){let o=i.nodes.map(i=>{let o=a.nodes[i.id];if(!o)return i;let{x:s,y:c,width:l,height:d}=o;return{...i,width:l,height:d,x:s,y:c}}),s=i.edges.map(i=>{let o=a.edges[i.id];return o?{...i,...o}:i});return{...i,bounds:{x:a.x,y:a.y,width:a.width,height:a.height},nodes:o,edges:s}}function applyManualLayout$1(i,a){let o=new Map(i.nodes.map(i=>[i.id,i]));if(i.hash===a.hash||canApplySafely(i,a))return adjustCompoundNodes(i.nodes.filter(i=>!i.parent),o,a),safeApplyLayout(i,a);i.hasLayoutDrift=!0;let s=BBox$1.merge(...i.nodes.map(i=>a.nodes[i.id]).filter(i=>!!i));return i.nodes.filter(i=>i.parent==null).reduce((i,s)=>layoutNode(s,i,o,a),{x:s.x,y:s.y+s.height+100}),i.edges.filter(i=>!a.edges[i.id]).forEach(i=>layoutEdge(i,a)),safeApplyLayout(i,a)}function layoutNode(i,a,o,s){let c=s.nodes[i.id],l=c?.isCompound??!1,d=!c,f=d?a:{x:c.x,y:c.y},p=i.children.map(i=>s.nodes[i]).filter(i=>!!i),m=p.length>0&&BBox$1.merge(...p),h=l&&m?{x:m.x,y:m.y+m.height+100}:{x:f.x+containerMargin.left,y:f.y+containerMargin.top};return i.children.map(i=>o.get(i)).reduce((i,a)=>layoutNode(a,i,o,s),h),c=i.children.length>0?buildCompoundNodeLayout(i,s):s.nodes[i.id]??{isCompound:!1,width:i.width,height:i.height,x:f.x,y:f.y},s.nodes[i.id]=c,d?{x:c.x+c.width+100,y:c.y}:a}function layoutEdge(i,a){let o=a.nodes[i.source],s=a.nodes[i.target],c=toVector(BBox$1.center(o)),l=toVector(BBox$1.center(s)),d=l.subtract(c),{x:f,y:p}=d.divide(2).add(c),m={...i?.labelBBox??{width:0,height:0},x:f,y:p},h=d.multiply(.7).add(c),g=d.multiply(.3).add(c);a.edges[i.id]={points:[[c.x,c.y],[g.x,g.y],[h.x,h.y],[l.x,l.y]],labelBBox:m,controlPoints:[h]}}function adjustCompoundNodes(i,a,o){i.filter(i=>i.children.length>0).forEach(i=>{adjustCompoundNodes(i.children.map(i=>a.get(i)).filter(i=>!!i),a,o),o.nodes[i.id]=buildCompoundNodeLayout(i,o)})}function buildCompoundNodeLayout(i,a){let o=BBox$1.merge(...i.children.map(i=>a.nodes[i]));return{isCompound:!0,x:o.x-containerMargin.left,y:o.y-containerMargin.top,width:o.width+containerMargin.left+containerMargin.right,height:o.height+containerMargin.top+containerMargin.bottom}}function canApplySafely(i,a){let o=i=>i.children.length>0;return deepEqual(i.autoLayout,a.autoLayout)&&i.nodes.every(i=>{let s=a.nodes[i.id];return!!s&&o(i)===s.isCompound})&&i.edges.every(i=>!!a.edges[i.id])}function toVector({x:i,y:a}){return new Vector(i,a)}function isCompound(i){return i.children.length>0}function toArrowType(i){switch(i){case`open`:return`vee`;default:return i}}function pointToPx(i){return Array.isArray(i)?[pointToPx(i[0]),pointToPx(i[1])]:(invariant$1(isFinite(i),`Invalid not finite point value ${i}`),Math.round(i))}const inchToPx=i=>(invariant$1(isFinite(i),`Invalid not finite inch value ${i}`),Math.floor(i*72)),pxToInch=i=>Math.ceil(i/72*1e3)/1e3,pxToPoints=i=>Math.ceil(i);pxToPoints(40).toString();function compoundColor(i,a){return toHex(scale(i,{l:-35-5*a,s:-15-5*a}))}function compoundLabelColor(i){return toHex(transparentize(i,.3))}var import_word_wrap=__toESM(require_word_wrap(),1);function sanitize(i){return i.trim().replaceAll(`&`,`&`).replaceAll(`<`,`<`).replaceAll(`>`,`>`)}function wrap(i,{maxchars:a,maxLines:s,sanitize:c=e$2()}){let l=(0,import_word_wrap.default)(i,{width:a,indent:``,escape:c}).split(`
|
|
29
|
+
`);return e$3(s)&&s>0&&l.length>s&&(l=l.slice(0,s)),l}function wrapWithFont({text:i,maxchars:a,fontsize:o,maxLines:s,bold:c,color:l}){let d=wrap(i,{maxchars:a,maxLines:s,sanitize}).join(`<BR/>`);c&&(d=`<B>${d}</B>`);let f=l?` COLOR="${l}"`:``;return`<FONT POINT-SIZE="${pxToPoints(o)}"${f}>${d}</FONT>`}function maxchars(i){switch(i){case`xs`:case`sm`:return 30;case`md`:return 40;case`lg`:case`xl`:return 55;default:nonexhaustive$1(i)}}function nodeLabel(i,a){let{sizes:{size:o},values:s}=a.nodeSizes(i.style),c=a.colors(i.color).elements,l=[`sm`,`xs`].includes(o),d=e$4(i.icon),f=i.style.iconPosition??`left`,p=d&&(f===`left`||f===`right`),m=[wrapWithFont({text:i.title,fontsize:s.textSize,maxchars:maxchars(o),maxLines:l?1:3})];if(o!==`xs`){e$4(i.technology?.trim())&&m.push(wrapWithFont({text:i.technology,fontsize:Math.ceil(s.textSize*.65),maxchars:p?35:45,maxLines:1,color:c.loContrast}));let a=RichText.from(i.description).text;a&&m.push(wrapWithFont({text:a,fontsize:Math.ceil(s.textSize*.75),maxchars:p?35:45,maxLines:l?3:5,color:c.loContrast}))}if(m.length===1&&d===!1)return`<${m[0]}>`;let h=p?(a,o,c)=>{let l=`<TD ALIGN="TEXT" BALIGN="LEFT">${a}</TD>`;if(o===0){let a=c.length>1?` ROWSPAN="${c.length}"`:``,o=Math.ceil(s.iconSize+16);(i.shape===`queue`||i.shape===`mobile`)&&(o+=20),f===`right`?(l=`<TD${a} WIDTH="16"> </TD>${l}`,l=`${l}<TD${a} WIDTH="${o}"> </TD>`):(l=`<TD${a} WIDTH="${o}"> </TD>${l}`,l=`${l}<TD${a} WIDTH="16"> </TD>`)}return`<TR>${l}</TR>`}:i=>`<TR><TD>${i}</TD></TR>`,g=m.map(h).join(``);if(d&&(f===`top`||f===`bottom`)){let i=`<TR><TD HEIGHT="${Math.ceil(s.iconSize+8)}"> </TD></TR>`;g=f===`top`?`${i}${g}`:`${g}${i}`}return`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="4">${g}</TABLE>>`}function compoundLabel(i,a){let o=wrapWithFont({text:i.title.toUpperCase(),maxchars:50,fontsize:11,maxLines:1,bold:!0,color:a});return o.includes(`<BR/>`)?`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD ALIGN="TEXT" BALIGN="LEFT">${o}</TD></TR></TABLE>>`:`<${o}>`}const BGCOLOR=`BGCOLOR="${LikeC4Styles.DEFAULT.relationshipColors.labelBg}A0"`;function edgelabel({label:i,technology:a}){let o=[];return e$4(i?.trim())&&o.push(wrapWithFont({text:i,maxchars:40,fontsize:14,maxLines:5,bold:i===`[...]`})),e$4(a?.trim())&&o.push(wrapWithFont({text:`[ ${a} ]`,fontsize:12,maxLines:1,maxchars:40})),o.length===0?null:`<<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" ${BGCOLOR}>${o.map(i=>`<TR><TD ALIGN="TEXT" BALIGN="LEFT">${i}</TD></TR>`).join(``)}</TABLE>>`}function stepEdgeLabel(i,a){let o=`<TABLE BORDER="0" CELLPADDING="6" ${BGCOLOR}><TR><TD WIDTH="20" HEIGHT="20"><FONT POINT-SIZE="${pxToPoints(14)}"><B>${i}</B></FONT></TD></TR></TABLE>`;return e$4(a?.trim())?`<${[`<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">`,`<TR>`,`<TD>${o}</TD>`,`<TD ${BGCOLOR} CELLPADDING="3">`,wrapWithFont({text:a,maxchars:40,fontsize:14,maxLines:5}),`</TD>`,`</TR>`,`</TABLE>`].join(``)}>`:`<${o}>`}const DefaultEdgeStyle=`dashed`,FontName=`Arial`,logger$13=createLogger(`dot`),GraphClusterSpace=50.1;var DotPrinter=class{ids=new Set;subgraphs=new Map;nodes=new Map;edges=new Map;compoundIds;edgesWithCompounds;graphology=new Graph({allowSelfLoops:!0,multi:!0,type:`directed`});graphvizModel;constructor(i,a){this.view=i,this.styles=a,this.compoundIds=new Set(i.nodes.filter(isCompound).map(i=>i.id)),this.edgesWithCompounds=new Set(this.compoundIds.size>0?i.edges.filter(i=>this.compoundIds.has(i.source)||this.compoundIds.has(i.target)).map(i=>i.id):[]);for(let a of i.nodes)this.graphology.addNode(a.id,{origin:a,level:a.level,depth:a.depth??0,modelRef:a.modelRef??null,deploymentRef:a.deploymentRef??null,maxConnectedHierarchyDistance:0});for(let a of i.edges){let i=this.graphology.getNodeAttribute(a.source,`deploymentRef`),o=this.graphology.getNodeAttribute(a.target,`deploymentRef`);(i===null||o===null)&&(i=this.graphology.getNodeAttribute(a.source,`modelRef`),o=this.graphology.getNodeAttribute(a.target,`modelRef`));let s=-1;i!==null&&o!==null&&(s=hierarchyDistance(i,o)),this.graphology.addEdgeWithKey(a.id,a.source,a.target,{origin:a,hierarchyDistance:s,weight:1}),s>this.graphology.getNodeAttribute(a.source,`maxConnectedHierarchyDistance`)&&this.graphology.mergeNodeAttributes(a.source,{maxConnectedHierarchyDistance:s}),s>this.graphology.getNodeAttribute(a.target,`maxConnectedHierarchyDistance`)&&this.graphology.mergeNodeAttributes(a.target,{maxConnectedHierarchyDistance:s})}this.graphology.forEachEdge((i,{hierarchyDistance:a},o,s,c,l)=>{let d=Math.max(c.maxConnectedHierarchyDistance,l.maxConnectedHierarchyDistance);if(d>a)this.graphology.mergeEdgeAttributes(i,{weight:d-a+1});else{let c=this.graphology.directedDegree(o),l=this.graphology.directedDegree(s);c===1&&l===1&&a>1&&this.graphology.mergeEdgeAttributes(i,{weight:a})}});let o=this.graphvizModel=this.createGraph();this.applyNodeAttributes(o.attributes.node),this.applyEdgeAttributes(o.attributes.edge),this.build(o),this.postBuild(o)}get $defaults(){return this.styles.defaults}get hasEdgesWithCompounds(){return this.edgesWithCompounds.size>0}get defaultRelationshipColors(){let i=this.styles.relationshipColors;return{line:i.line,label:i.label,labelBg:i.labelBg}}postBuild(i){}build(i){let a=(i,o)=>{let s=this.generateGraphvizId(i),c=this.elementToSubgraph(i,o.subgraph(s));this.subgraphs.set(i.id,c);for(let o of i.children){let i=this.computedNode(o);if(isCompound(i))a(i,c);else{let a=nonNullable$1(this.getGraphNode(i.id),`Graphviz Node not found for ${i.id}`);c.node(a.id)}}},o=[];for(let a of this.view.nodes)if(isCompound(a))e$5(a.parent)&&o.push(a);else{let o=this.generateGraphvizId(a),s=this.elementToNode(a,i.node(o));this.nodes.set(a.id,s)}for(let s of o)a(s,i);for(let a of this.view.edges){let o=this.addEdge(a,i);o&&this.edges.set(a.id,o)}}print(){return toDot(this.graphvizModel,{print:{indentStyle:`space`,indentSize:2}})}createGraph(){let i=this.view.autoLayout,a=digraph({[attribute.likec4_viewId]:this.view.id,[attribute.bgcolor]:`transparent`,[attribute.layout]:`dot`,[attribute.compound]:!0,[attribute.rankdir]:i.direction,[attribute.TBbalance]:`min`,[attribute.splines]:`spline`,[attribute.outputorder]:`nodesfirst`,[attribute.nodesep]:pxToInch(i.nodeSep??110),[attribute.ranksep]:pxToInch(i.rankSep??120),[attribute.pad]:pxToInch(15),[attribute.fontname]:FontName});return a.attributes.graph.apply({[attribute.fontsize]:pxToPoints(this.styles.fontSize()),[attribute.labeljust]:i.direction===`RL`?`r`:`l`,[attribute.labelloc]:i.direction===`BT`?`b`:`t`,[attribute.margin]:GraphClusterSpace}),a}applyNodeAttributes(i){let a=this.styles.elementColors;i.apply({[attribute.fontname]:FontName,[attribute.shape]:`rect`,[attribute.fillcolor]:a.fill,[attribute.fontcolor]:a.hiContrast,[attribute.color]:a.stroke,[attribute.style]:`filled`,[attribute.penwidth]:0})}applyEdgeAttributes(i){let a=this.defaultRelationshipColors;i.apply({[attribute.arrowsize]:.75,[attribute.fontname]:FontName,[attribute.fontsize]:pxToPoints(14),[attribute.penwidth]:pxToPoints(2),[attribute.color]:a.line,[attribute.fontcolor]:a.label})}checkNodeId(i,a=!1){return a?i=`cluster_`+i:i.toLowerCase().startsWith(`cluster`)&&(i=`nd_`+i),this.ids.has(i)?null:(this.ids.add(i),i)}generateGraphvizId(i){let a=isCompound(i),o=nameFromFqn$1(i.id).toLowerCase(),s=this.checkNodeId(o,a);if(s!==null)return s;o=nameFromFqn$1(i.id).toLowerCase();let c=1;do s=this.checkNodeId(o+`_`+ c++,a);while(s===null);return s}elementToSubgraph(i,a){invariant$1(isCompound(i),`node should be compound`),invariant$1(e$6(i.depth),`node.depth should be defined`);let o=this.styles.colors(i.color).elements,s=compoundLabelColor(o.loContrast);return a.apply({[attribute.likec4_id]:i.id,[attribute.likec4_level]:i.level,[attribute.likec4_depth]:i.depth,[attribute.fillcolor]:compoundColor(o.fill,i.depth),[attribute.color]:compoundColor(o.stroke,i.depth),[attribute.style]:`filled`,[attribute.margin]:pxToPoints(i.children.length>1?40:32)}),e$7(i.title.trim())||a.set(attribute.label,compoundLabel(i,s)),a}elementToNode(i,a){invariant$1(!isCompound(i),`node should not be compound`);let o=e$4(i.icon),s=this.styles.colors(i.color).elements,{values:{padding:c,sizes:{width:l,height:d}}}=this.styles.nodeSizes(i.style),f=o?8:c;switch(a.attributes.apply({[attribute.likec4_id]:i.id,[attribute.likec4_level]:i.level,[attribute.label]:nodeLabel(i,this.styles),[attribute.margin]:`${pxToInch(f)},${pxToInch(c)}`}),a.attributes.set(attribute.width,pxToInch(l)),a.attributes.set(attribute.height,pxToInch(d)),this.styles.isDefaultColor(i.color)||a.attributes.apply({[attribute.fillcolor]:s.fill,[attribute.fontcolor]:s.hiContrast,[attribute.color]:s.stroke}),i.shape){case`cylinder`:case`storage`:a.attributes.apply({[attribute.margin]:`${pxToInch(f)},${pxToInch(0)}`,[attribute.penwidth]:pxToPoints(2),[attribute.shape]:`cylinder`});break;case`browser`:a.attributes.apply({[attribute.margin]:`${pxToInch(o?f:f+4)},${pxToInch(c+6)}`});break;case`mobile`:a.attributes.apply({[attribute.margin]:`${pxToInch(o?f:f+4)},${pxToInch(c)}`});break;case`queue`:a.attributes.apply({[attribute.width]:pxToInch(l),[attribute.height]:pxToInch(d-8),[attribute.margin]:`${pxToInch(o?f:f+4)},${pxToInch(c)}`});break;case`component`:a.attributes.apply({[attribute.width]:pxToInch(l+10),[attribute.margin]:`${pxToInch(f+20)},${pxToInch(c)}`});break;default:break}return a}leafElements(i){return i===null?this.view.nodes.filter(i=>!isCompound(i)):this.computedNode(i).children.flatMap(i=>{let a=this.computedNode(i);return isCompound(a)?this.leafElements(a.id):a})}descendants(i){return i===null?this.view.nodes.slice():this.computedNode(i).children.flatMap(i=>{let a=this.computedNode(i);return[a,...this.descendants(a.id)]})}computedNode(i){return nonNullable$1(this.view.nodes.find(a=>a.id===i),`Node ${i} not found`)}getGraphNode(i){return this.nodes.get(i)??null}getSubgraph(i){return this.subgraphs.get(i)??null}edgeEndpoint(i,a){let o=this.computedNode(i),s=this.getGraphNode(i),c;return s?[o,s,void 0]:(invariant$1(isCompound(o),`endpoint node should be compound`),c=this.getSubgraph(i)?.id,invariant$1(c,`subgraph ${i} not found`),o=nonNullable$1(a(this.leafElements(i)),`leaf element in ${i} not found`),s=nonNullable$1(this.getGraphNode(o.id),`source graphviz node ${o.id} not found`),[o,s,c])}findInternalEdges(i){if(i===null)return this.view.edges.slice();let a=this.computedNode(i);return t$3(this.descendants(i),t$7(i=>t$8(i.inEdges,i.outEdges)),n$1(),r(t$8(a.inEdges,a.outEdges)),t(i=>this.view.edges.find(a=>a.id===i)),n$2(e$4))}withoutCompoundEdges(i){return this.edgesWithCompounds.size===0?i:{...i,inEdges:i.inEdges.filter(i=>!this.edgesWithCompounds.has(i)),outEdges:i.outEdges.filter(i=>!this.edgesWithCompounds.has(i))}}assignGroups(){let i=t$3(this.view.nodes,n$2(isCompound),t(i=>i.id),t$9(compareFqnHierarchically),t$10(),t(i=>({id:i,edges:this.findInternalEdges(i).filter(i=>i.source!==i.target&&!this.compoundIds.has(i.source)&&!this.compoundIds.has(i.target))})),n$2(({edges:i})=>i.length>1&&i.length<8),n$3(4)),a=new Set;for(let o of i){let i=o.edges.filter(i=>!a.has(i.source)&&!a.has(i.target));for(let s of i)try{let i=nonNullable$1(this.getGraphNode(s.source),`Graphviz Node not found for ${s.source}`),c=nonNullable$1(this.getGraphNode(s.target),`Graphviz Node not found for ${s.target}`);a.add(s.source),a.add(s.target),i.attributes.set(attribute.group,o.id),c.attributes.set(attribute.group,o.id)}catch(i){logger$13.error(`Failed to assign group to edge ${s.id}`,{error:i})}}}applyManualLayout({height:i,...a}){let o=a.x<0?-a.x:0;a.y<0&&-a.y;for(let{id:s,...c}of a.nodes){let a=this.getGraphNode(s);if(!a)continue;let l=pxToInch(c.center.x)+o,d=pxToInch(i-c.center.y);c.fixedsize?a.attributes.apply({[attribute.pos]:`${l},${d}!`,[attribute.pin]:!0,[attribute.width]:pxToInch(c.fixedsize.width),[attribute.height]:pxToInch(c.fixedsize.height),[attribute.fixedsize]:!0}):a.attributes.set(attribute.pos,`${l},${d}`)}for(let[,i]of this.edges.entries())i.attributes.delete(attribute.weight),i.attributes.delete(attribute.minlen),i.attributes.delete(attribute.constraint);return this.graphvizModel.apply({[attribute.layout]:`fdp`,[attribute.overlap]:`vpsc`,[attribute.sep]:`+50,50`,[attribute.esep]:`+10,10`,[attribute.start]:`random2`,[attribute.splines]:`compound`,[attribute.K]:10}),this.graphvizModel.delete(attribute.compound),this.graphvizModel.delete(attribute.rankdir),this.graphvizModel.delete(attribute.nodesep),this.graphvizModel.delete(attribute.ranksep),this.graphvizModel.delete(attribute.pack),this.graphvizModel.delete(attribute.pad),this.graphvizModel.delete(attribute.packmode),this.graphvizModel.attributes.graph.delete(attribute.margin),this}},DeploymentViewPrinter=class extends DotPrinter{createGraph(){let i=super.createGraph(),a=this.view.autoLayout;return i.delete(attribute.TBbalance),i.apply({[attribute.nodesep]:pxToInch(a.nodeSep??130),[attribute.ranksep]:pxToInch(a.rankSep??130)}),i}postBuild(i){t$3(this.view.nodes,t(i=>({node:i,graphvizNode:this.getGraphNode(i.id)})),t$11(({node:i,graphvizNode:a})=>{if(a!=null)return i.modelRef}),t$12(),t(i=>i),t$13(a=>{a.length<2||i.subgraph({[attribute.rank]:`same`},i=>{for(let{graphvizNode:o}of a)i.node(nonNullable$1(o).id)})}),t$14(()=>{i.set(attribute.newrank,!0),i.set(attribute.clusterrank,`global`),i.delete(attribute.pack),i.delete(attribute.packmode)}))}elementToSubgraph(i,a){let o=super.elementToSubgraph(i,a);return i.children.length>1&&o.set(attribute.margin,pxToPoints(50)),o}addEdge(i,a){let[o,s]=[i.source,i.target],[c,d,f]=this.edgeEndpoint(o,i=>t$5(i)),[p,m,h]=this.edgeEndpoint(s,n$4),g=e$1(h)||e$1(f),_=a.edge([d,m],{[attribute.likec4_id]:i.id,[attribute.style]:i.line??DefaultEdgeStyle});h&&_.attributes.set(attribute.lhead,h),f&&_.attributes.set(attribute.ltail,f);let v=this.graphology.getEdgeAttribute(i.id,`weight`);v>1&&!this.graphology.hasDirectedEdge(i.target,i.source)&&_.attributes.set(attribute.weight,v);let y=edgelabel(i);if(y&&_.attributes.set(g?attribute.xlabel:attribute.label,y),i.color&&i.color!==this.$defaults.relationship.color){let a=this.styles.colors(i.color).relationships;_.attributes.apply({[attribute.color]:a.line,[attribute.fontcolor]:a.label})}let[b,x]=[i.head??this.$defaults.relationship.arrow,i.tail??`none`];return b===`none`&&x===`none`?(_.attributes.apply({[attribute.arrowtail]:`none`,[attribute.arrowhead]:`none`,[attribute.dir]:`none`}),_):i.dir===`both`?(_.attributes.apply({[attribute.arrowhead]:toArrowType(b),[attribute.arrowtail]:toArrowType(i.tail??b),[attribute.dir]:`both`}),!g&&c.modelRef!==p.modelRef&&_.attributes.set(attribute.constraint,!1),_):(b&&_.attributes.set(attribute.arrowhead,toArrowType(b)),x!==`none`&&_.attributes.set(attribute.arrowtail,toArrowType(x)),_)}},DynamicViewPrinter=class extends DotPrinter{postBuild(i){i.delete(attribute.TBbalance),i.set(attribute.ordering,`in`)}addEdge(i,a){let{nodes:o}=this.view,[s,c]=i.dir===`back`?[i.target,i.source]:[i.source,i.target],[l,d,f]=this.edgeEndpoint(s,i=>t$5(i)),[p,m,h]=this.edgeEndpoint(c,n$4),g=a.edge([d,m],{[attribute.likec4_id]:i.id,[attribute.style]:i.line??DefaultEdgeStyle});if(h&&g.attributes.set(attribute.lhead,h),f&&g.attributes.set(attribute.ltail,f),i.color&&i.color!==this.$defaults.relationship.color){let a=this.styles.colors(i.color).relationships;g.attributes.apply({[attribute.color]:a.line,[attribute.fontcolor]:a.label})}let _=[i.label?.trim(),i.technology?.trim()].filter(e$4).join(`
|
|
30
|
+
`),v=stepEdgeLabel(extractStep(i.id),_);g.attributes.set(attribute.label,v);let y=o.findIndex(i=>i.id===s);o.findIndex(i=>i.id===c)<y&&i.dir!==`back`&&g.attributes.apply({[attribute.minlen]:0});let[b,x]=[i.head??this.$defaults.relationship.arrow,i.tail??`none`];return i.dir===`back`?(g.attributes.apply({[attribute.arrowtail]:toArrowType(b),[attribute.dir]:`back`}),x!==`none`&&g.attributes.apply({[attribute.arrowhead]:toArrowType(x),[attribute.minlen]:0}),g):b===`none`&&x===`none`||b!==`none`&&x!==`none`?(g.attributes.apply({[attribute.arrowhead]:toArrowType(b),[attribute.arrowtail]:toArrowType(x),[attribute.dir]:`both`}),g):b===`none`?(g.attributes.delete(attribute.arrowhead),g.attributes.apply({[attribute.arrowtail]:toArrowType(x),[attribute.minlen]:0,[attribute.dir]:`back`}),g):(g.attributes.set(attribute.arrowhead,toArrowType(b)),g)}};const rankLogger=createLogger(`dot.rank`);var ElementViewPrinter=class extends DotPrinter{postBuild(i){this.assignGroups();let o=new Set,s=this.view.nodes.reduce((i,a)=>(isCompound(a)&&(o.add(a.id),i.push(a)),i),[]),c=!1;for(let i of s){let o=t$3(i.children,n$2(i=>!this.compoundIds.has(i)),t(i=>this.computedNode(i)),n$2(i=>i.inEdges.length===0&&i.outEdges.length===0));if(o.length<=2)continue;let s=2;switch(!0){case o.length>11:s=4;break;case o.length>4:s=3;break}let l=nonNullable$1(this.getSubgraph(i.id),`Subgraph not found for ${i.id}`),d=null;t$15(o,s).forEach(i=>{let a=i.length>1?l.createSubgraph({[attribute.rank]:`same`}):null;i.forEach((i,o)=>{let s=this.getGraphNode(i.id);s&&(a?.node(s.id),o===0&&(d&&l.edge([d,s],{[attribute.style]:`invis`}),d=s))}),c||=!!a})}let l=this.applyExplicitRankBlocks(i);c&&(i.set(attribute.newrank,!0),i.set(attribute.clusterrank,`global`)),l>0&&i.set(`likec4_rankBlocks`,l)}applyExplicitRankBlocks(i){let a=this.view.ranks??[];if(a.length===0)return 0;let o=0;for(let s of a){let a=[...new Set(s.nodes)].map(i=>this.getGraphNode(i)).filter(i=>!!i);if(a.length===0)continue;let c=i.createSubgraph({[attribute.rank]:s.type});a.forEach(i=>c.node(i.id)),o+=1,rankLogger.debug`rank ${s.type} => ${a.map(i=>i.id).join(`, `)}`}return o}addEdge(i,a){let[o,s]=i.dir===`back`?[i.target,i.source]:[i.source,i.target],[c,d,f]=this.edgeEndpoint(o,i=>t$5(i)),[p,m,h]=this.edgeEndpoint(s,n$4),g=i.parent,_=this.graphology.getEdgeAttributes(i.id),v=a.edge([d,m],{[attribute.likec4_id]:i.id,[attribute.style]:i.line??DefaultEdgeStyle});h&&v.attributes.set(attribute.lhead,h),f&&v.attributes.set(attribute.ltail,f);let y=e$1(h)||e$1(f);!this.graphology.hasDirectedEdge(i.target,i.source)&&_.weight>1&&v.attributes.set(attribute.weight,_.weight);let b=edgelabel(i);if(b&&v.attributes.set(y?attribute.xlabel:attribute.label,b),i.color&&i.color!==this.$defaults.relationship.color){let a=this.styles.colors(i.color).relationships;v.attributes.apply({[attribute.color]:a.line,[attribute.fontcolor]:a.label})}let[x,S]=[i.head??this.$defaults.relationship.arrow,i.tail??`none`];if(i.dir===`back`)return v.attributes.apply({[attribute.arrowtail]:toArrowType(x),[attribute.dir]:`back`}),S!==`none`&&v.attributes.apply({[attribute.arrowhead]:toArrowType(S),[attribute.dir]:`both`,[attribute.minlen]:0}),v;if(x===`none`&&S===`none`)return v.attributes.apply({[attribute.arrowtail]:`none`,[attribute.arrowhead]:`none`,[attribute.dir]:`none`,[attribute.minlen]:0,[attribute.constraint]:!1}),v;if(x!==`none`&&S!==`none`)return v.attributes.apply({[attribute.arrowhead]:toArrowType(x),[attribute.arrowtail]:toArrowType(S),[attribute.dir]:`both`}),v;if(v.attributes.set(attribute.arrowhead,toArrowType(x)),S!==`none`&&v.attributes.set(attribute.arrowtail,toArrowType(S)),this.view.edges.length===1)return v;let C;return C=g===null&&c.parent==null&&p.parent==null?this.view.edges.filter(a=>{if(a.id===i.id||a.parent!==null||a.source===i.source&&a.target===i.target||a.source===i.target&&a.target===i.source)return!1;let o=this.computedNode(a.source),s=this.computedNode(a.target);return isCompound(o)||isCompound(s)?!1:o.parent==null&&s.parent==null}):this.findInternalEdges(g).filter(a=>!(a.id===i.id||a.source===i.source&&a.target===i.target||a.source===i.target&&a.target===i.source)),C.length===0&&(g===null||this.leafElements(g).length<=3)&&v.attributes.set(attribute.minlen,0),v}};function parseBB(i){let[a,o,s,c]=i?i.split(`,`).map(i=>pointToPx(+i)):[0,0,0,0],l=Math.round(s-a),d=Math.round(o-c);return{x:Math.round(a),y:Math.round(c),width:l,height:d}}function parsePos(i){try{let[a,o]=i.split(`,`);return{x:pointToPx(parseFloat(a)),y:pointToPx(parseFloat(o))}}catch(a){throw Error(`Failed on parsing pos: ${i}`,{cause:a})}}function parseNode(i){let{x:a,y:o}=parsePos(i.pos),s=inchToPx(parseFloat(i.width)),c=inchToPx(parseFloat(i.height));return{x:a-Math.round(s/2),y:o-Math.round(c/2),width:s,height:c}}function parseLabelBbox(i,[a,o]=[0,0]){if(!i||i.length===0)return null;let s=1/0,c=1/0,l=-1/0,d=-1/0,f=13;try{for(let p of i){if(p.op===`F`){f=pointToPx(p.size);continue}if(p.op===`T`){let i=pointToPx(p.pt[0])-a,m=pointToPx(p.width);switch(p.align){case`r`:i-=m;break;case`c`:i-=Math.round(m/2);break}s=Math.min(s,i),l=Math.max(l,i+m);let h=pointToPx(p.pt[1])-o;c=Math.min(c,Math.round(h-f)),d=Math.max(d,h)}}}catch(a){return logger$17.warn(`Failed on parsing label draw ops:
|
|
31
|
+
{labelDrawOps}`,{e:a,labelDrawOps:i}),null}return s===1/0?null:{x:s-2,y:c-2,width:l-s+4,height:d-c+4}}function parseEdgePoints({_draw_:i,likec4_id:a=`???`},o=`<unknown view>`){try{let s=i.filter(i=>i.op.toLowerCase()===`b`);invariant$1(t$4(s,1),`view ${o} edge ${a} should have at least one bezier draw op`),s.length>1&&logger$17.warn(`view ${o} edge ${a} has more than one bezier draw op, using the first one only`);let c=s[0].points.map(i=>pointToPx(i));return invariant$1(t$4(c,2),`view ${o} edge ${a} should have at least two points`),c}catch(s){throw Error(`failed on parsing view ${o} edge ${a} _draw_:\n${JSON.stringify(i,null,2)}`,{cause:s})}}function parseGraphvizEdge(i,{id:a,source:o,target:s,dir:c,label:l,description:d,...f},p){let m=parseLabelBbox(i._ldraw_??i._tldraw_??i._hldraw_),h=i.dir===`back`||c===`back`;return l=l&&m?wrap(l,{maxchars:40,maxLines:5}).join(`
|
|
32
|
+
`):null,{id:a,source:o,target:s,label:l,...e$4(d)&&{description:d},points:parseEdgePoints(i,p),labelBBox:m,...h?{dir:`back`}:{},...f}}function parseGraphvizJson(i,a){let o=parseBB(i.bb),{nodes:s,edges:c,hasManualLayout:l,manualLayout:d,...f}=a,p=[],m=[],h;if(h=f._type===`dynamic`?{...f,sequenceLayout:{actors:[],compounds:[],parallelAreas:[],steps:[],bounds:o},[_stage]:`layouted`,bounds:o,nodes:p,edges:m}:{...f,[_stage]:`layouted`,bounds:o,nodes:p,edges:m},l){let i=h;i[_layout]=`auto`}let g=i.objects??[];for(let i of s){let a=g.find(a=>a.likec4_id===i.id);invariant$1(a,`View ${f.id} node ${i.id} not found in graphviz output`);try{let{x:o,y:s,width:c,height:l}=`bb`in a?parseBB(a.bb):parseNode(a),d=[o,s];p.push({...i,x:o,y:s,width:c,height:l,labelBBox:parseLabelBbox(a._ldraw_,d)??{x:o,y:s,width:c,height:l}})}catch(o){throw Error(`Failed on parsing node ${i.id}:\n${JSON.stringify(a,null,2)}`,{cause:o})}}let _=i.edges??[];for(let i of c){let a=_.find(a=>a.likec4_id===i.id);if(!a){logger$17.warn`View ${f.id} edge ${i.id} not found in graphviz output, skipping`;continue}m.push(parseGraphvizEdge(a,i,f.id))}return h}function parseGraphvizJsonOfProjectsView(i,a){return parseGraphvizJson(i,a)}var ProjectsViewPrinter=class i extends DotPrinter{static toDot(a){return new i(a).print()}constructor(i){super(i,LikeC4Styles$1.DEFAULT)}createGraph(){let i=super.createGraph();return i.apply({[attribute.nodesep]:pxToInch(100),[attribute.ranksep]:pxToInch(100)}),i.delete(attribute.TBbalance),i}elementToNode(i,a){return a.attributes.apply({[attribute.likec4_id]:i.id,[attribute.likec4_project]:i.projectId}),super.elementToNode(i,a)}addEdge(i,a){let o=nonNullable$1(this.getGraphNode(i.source),`Node not found for ${i.source}`),s=nonNullable$1(this.getGraphNode(i.target),`Node not found for ${i.target}`),c=this.graphology.getEdgeAttributes(i.id),l=a.edge([o,s],{[attribute.likec4_id]:i.id,[attribute.likec4_project]:i.projectId,[attribute.style]:i.line??DefaultEdgeStyle});!this.graphology.hasDirectedEdge(i.target,i.source)&&c.weight>1&&l.attributes.set(attribute.weight,c.weight);let d=edgelabel(i);if(d&&l.attributes.set(attribute.label,d),i.color&&i.color!==this.$defaults.relationship.color){let a=this.styles.colors(i.color).relationships;l.attributes.apply({[attribute.color]:a.line,[attribute.fontcolor]:a.label})}return l}};const limit=pLimit(1),logger$12=logger$17.getChild(`graphviz-wasm`);var GraphvizWasmAdapter=class i{static _graphviz=null;static opsCount=0;get concurrency(){return 1}dispose(){Graphviz.unload(),i._graphviz=null}[Symbol.dispose](){this.dispose()}graphviz(){return Promise.resolve().then(async()=>(i._graphviz||=(logger$12.debug`loading wasm`,i.opsCount=0,Graphviz.load()),await i._graphviz))}async attempt(a,o,s){return await limit(async()=>{try{let a=await s();return++i.opsCount>=10&&(logger$12.debug`unloading wasm`,Graphviz.unload(),i._graphviz=null),a}catch(s){logger$12.error(`FAILED GraphvizWasm. ${a}`,{error:s}),logger$12.error(`FAILED DOT:
|
|
33
|
+
`+o),Graphviz.unload(),i._graphviz=null}logger$12.warn(`Retrying...`),await delay(10,500);try{return await s()}finally{Graphviz.unload(),i._graphviz=null}})}async unflatten(i){return await this.attempt(`unflatten`,i,async()=>(await this.graphviz()).unflatten(i,1,!1,3).replaceAll(/\t\[/g,` [`).replaceAll(/\t/g,` `))}async acyclic(i){return await this.attempt(`acyclic`,i,async()=>{let a=(await this.graphviz()).acyclic(i,!0);return a.acyclic&&a.outFile||i})}async layoutJson(i){return await this.attempt(`layout`,i,async()=>(await this.graphviz()).layout(i,`json`,void 0,{yInvert:!0}))}async svg(i){return await this.attempt(`svg`,i,async()=>(await this.graphviz()).layout(i,`svg`))}};const getPrinter=({view:i,styles:a})=>{switch(!0){case isDynamicView(i):return new DynamicViewPrinter(i,a);case isDeploymentView(i):return new DeploymentViewPrinter(i,a);case isElementView(i):return new ElementViewPrinter(i,a);default:nonexhaustive$1(i)}},logger$11=logger$17.getChild([`layouter`]);var GraphvizLayouter=class{graphviz;constructor(i){this.graphviz=i??new GraphvizWasmAdapter}dispose(){this.graphviz.dispose()}[Symbol.dispose](){this.dispose()}get graphvizPort(){return this.graphviz}changePort(i){this.graphviz.dispose(),this.graphviz=i}async dotToJson(i){let a;try{a=await this.graphviz.layoutJson(i)}catch(a){throw logger$11.error(loggable(a)),logger$11.error`Failed to convert DOT to JSON:\n${i}`,a}try{return JSON.parse(a)}catch(o){throw logger$11.error(loggable(o)),logger$11.error`Failed to parse JSON:\n${a}\n. Generated from DOT:\n${i}`,o}}async layout(i){try{logger$11.debug`layouting view ${i.view.id}...`;let a=await this.dot(i),{view:o}=i,s=parseGraphvizJson(await this.dotToJson(a),o);return o.manualLayout&&(s=applyManualLayout$1(s,o.manualLayout)),isDynamicView(s)&&Object.assign(s,{sequenceLayout:calcSequenceLayout(s)}),a=a.split(`
|
|
34
|
+
`).filter(i=>!(i.includes(`margin`)&&i.includes(`${GraphClusterSpace}`))).join(`
|
|
35
|
+
`),logger$11.debug`layouting view ${i.view.id} done`,{dot:a,diagram:s}}catch(a){throw Error(`Error during layout: ${i.view.id}`,{cause:a})}}async svg(i){let a=await this.dot(i);return a=a.split(`
|
|
36
|
+
`).filter(i=>!(i.includes(`margin`)&&i.includes(`${GraphClusterSpace}`))).join(`
|
|
37
|
+
`),{svg:await this.graphviz.svg(a),dot:a}}async dot(i){let a=getPrinter(i).print();if(!isElementView(i.view))return a;try{return await this.graphviz.unflatten(a)}catch(o){return logger$11.warn(`Error during unflatten: ${i.view.id}`,{error:o}),a}}async layoutProjectsView(i){logger$11.debug`layouting projects overview...`;let a=new ProjectsViewPrinter(i).print();try{a=await this.graphviz.unflatten(a)}catch(i){logger$11.warn(`Error during unflatten of projects view`,{error:i})}let o=await this.dotToJson(a);return logger$11.debug`layouting projects overview done`,parseGraphvizJsonOfProjectsView(o,i)}};const logger$10=logger$17.getChild([`layouter`,`queue`]);var QueueGraphvizLayoter=class extends GraphvizLayouter{queue;isProcessingBatch=!1;constructor(i){super(i?.graphviz),this.queue=new PQueue({concurrency:i?.concurrency??this.graphvizPort.concurrency,timeout:i?.timeout??2e4,throwOnTimeout:i?.throwOnTimeout??!0})}async runInQueue(i){return this.isProcessingBatch?(logger$10.debug`waiting for batch to finish`,await this.queue.onIdle(),await promiseNextTick(),await this.runInQueue(i)):(this.queue.size>this.queue.concurrency*2+1&&(logger$10.debug`task limit reached: ${this.queue.size} (pending: ${this.queue.pending}), waiting queue to shrink to ${this.queue.concurrency}`,await this.queue.onSizeLessThan(this.queue.concurrency+1)),logger$10.trace`add task to queue`,await this.queue.add(i))}changePort(i){super.changePort(i),this.queue.concurrency!==i.concurrency&&(this.queue.concurrency=this.graphvizPort.concurrency,logger$10.debug`set queue concurrency to ${this.graphvizPort.concurrency}`)}async layout(i){let a=await this.runInQueue(async()=>await super.layout(i));if(!a)throw Error(`QueueGraphvizLayoter: layout failed`);return a}async layoutProjectsView(i){logger$10.debug`adding layoutProjectsView task to queue`;let a=await this.runInQueue(async()=>(logger$10.debug`layouting projects view`,await super.layoutProjectsView(i)));if(!a)throw Error(`QueueGraphvizLayoter: layoutProjectsView failed`);return a}async batchLayout(i){if(this.isProcessingBatch)return logger$10.debug`wait for previous layouts to finish`,await this.queue.onIdle(),await promiseNextTick(),await this.batchLayout(i);if(i.cancelToken?.isCancellationRequested)return logger$10.debug`cancellation requested`,[];let a=this.queue.concurrency;logger$10.debug`starting batch layout, size: ${i.batch.length}, concurrency: ${a}`,this.isProcessingBatch=!0;let o=[];try{for(let s of i.batch)if(logger$10.debug`add task for view ${s.view.id}`,this.queue.add(async()=>(a<=2&&await promiseNextTick(),await super.layout(s))).then(a=>{if(!a){i.onError?.(s,Error(`Layout queue returned null for view ${s.view.id}`));return}o.push(a),i.onSuccess?.(s,a)}).catch(a=>{logger$10.error(`Fail layout view ${s.view.id}`,{err:a}),i.onError?.(s,a)}),this.queue.size>a+2&&(logger$10.debug`task limit reached: ${this.queue.size}, waiting queue to shrink to ${a}`,await this.queue.onSizeLessThan(a+1),i.cancelToken?.isCancellationRequested)){logger$10.debug`cancellation requested`;break}}finally{await this.queue.onIdle(),logger$10.debug`batch layout done`,this.isProcessingBatch=!1}return o}dispose(){this.queue.clear(),super.dispose()}};const idattr=Symbol.for(`idattr`),ViewOps={writeId(i,a){return i[idattr]=a,i},readId(i){return i[idattr]}},ElementOps={writeId(i,a){return e$5(a)?i[idattr]=void 0:i[idattr]=a,i},readId(i){return i[idattr]}};function isLikeC4LangiumDocument(i){return i?.textDocument.languageId===LikeC4LanguageMetaData.languageId}function parseMarkdownAsString(i){return i?.markdown||i?.text}function parseAstPercent(i){let a=parseFloat(i);return isNaN(a)?100:t$16(a,{min:0,max:100})}function parseAstOpacityProperty({value:i}){return parseAstPercent(i)}function parseAstSizeValue({value:i}){switch(i){case`xs`:case`sm`:case`md`:case`lg`:case`xl`:return i;case`xsmall`:return`xs`;case`small`:return`sm`;case`medium`:return`md`;case`large`:return`lg`;case`xlarge`:return`xl`;default:nonexhaustive$1(i)}}function parseAstIconPositionValue({value:i}){switch(i){case`left`:case`right`:case`top`:case`bottom`:return i;default:nonexhaustive$1(i)}}function toRelationshipStyle(i,a){let o={};if(!i||i.length===0)return o;for(let s of i)if(a(s))switch(!0){case isColorProperty(s):{let i=toColor(s);e$4(i)&&(o.color=i);break}case isLineProperty(s):o.line=s.value;break;case isArrowProperty(s):switch(s.key){case`head`:o.head=s.value;break;case`tail`:o.tail=s.value;break;default:nonexhaustive$1(s)}break;default:nonexhaustive$1(s)}return o}function toColor(i){return i?.themeColor??i?.customColor?.$refText}function toAutoLayout(i){let a=i.rankSep,o=i.nodeSep,s;switch(i.direction){case`TopBottom`:s=`TB`;break;case`BottomTop`:s=`BT`;break;case`LeftRight`:s=`LR`;break;case`RightLeft`:s=`RL`;break;default:nonexhaustive$1(i.direction)}return{direction:s,...o&&{nodeSep:o},...a&&{rankSep:a}}}function toAstViewLayoutDirection(i){switch(i){case`TB`:return`TopBottom`;case`BT`:return`BottomTop`;case`LR`:return`LeftRight`;case`RL`:return`RightLeft`;default:nonexhaustive$1(i)}}function getViewRulePredicateContainer(i){return getContainerOfType(i,i=>isViewRulePredicate(i)||isDeploymentViewRulePredicate(i)||isDynamicViewIncludePredicate(i))}const _isModel=i=>isModel(i)||isElementBody(i)||isExtendElementBody(i)||isElementViewBody(i)||isDynamicViewBody(i)||isElementRef(i),_isDeployment$1=i=>isModelDeployments(i)||isDeploymentViewBody(i)||isDeploymentNodeBody(i)||isExtendDeploymentBody(i)||isDeployedInstanceBody(i);function isFqnRefInsideGlobals(i){for(;;){if(_isDeployment$1(i)||_isModel(i))return!1;if(isGlobals(i)||isModelViews(i))return!0;if(i.$container)i=i.$container;else return!1}}function isFqnRefInsideModel(i){for(;;){if(_isDeployment$1(i))return!1;if(_isModel(i))return!0;if(i.$container)i=i.$container;else return!1}}function isFqnRefInsideDeployment(i){for(;;){if(_isModel(i))return!1;if(_isDeployment$1(i))return!0;if(i.$container)i=i.$container;else return!1}}var LikeC4DocumentationProvider=class extends JSDocDocumentationProvider{parser;locator;constructor(i){super(i),this.parser=i.likec4.ModelParser,this.locator=i.likec4.ModelLocator}getDocumentation(i){if(!isDeploymentNode$1(i)&&!isDeployedInstance(i)&&!isElement(i))return super.getDocumentation(i);try{let a=getDocument$6(i);if(a.state<DocumentState.Linked)return super.getDocumentation(i);let o=this.parser.forDocument(a);if(isDeploymentNode$1(i))return`**${o.parseDeploymentNode(i).title}**`;if(isDeployedInstance(i)){let s=o.parseDeployedInstance(i),[c,l]=FqnRef.isImportRef(s.element)?[s.element.project,s.element.model]:[a.likec4ProjectId,s.element.model],d=c?this.locator.getParsedElement(l,c):this.locator.getParsedElement(l),f=[`_instance of_ \`${l}\``];return d&&f.push(`**${d.element.title}**`),f.join(`
|
|
38
|
+
`)}if(isElement(i)){let a=o.parseElement(i);return a?[`**${a.title}**`,`<small>kind: \`${a.kind}\`</small>`].join(`
|
|
39
|
+
`):void 0}nonexhaustive(i)}catch(i){logWarnError(i)}}};function areOverlap(i,a){return[i,a]=compareRanges(i,a)>0?[a,i]:[i,a],isInRagne(i.range,a.range.start)}function compareRanges(i,a){let o=i.range.start.line-a.range.start.line;return o===0?i.range.start.character-a.range.start.character:o}function isInRagne(i,a){return!(a.line<i.start.line||a.line>i.end.line||a.line==i.start.line&&a.character<i.start.character||a.line==i.end.line&&a.character>i.end.character)}function isMultiline(i){return!!i&&i.range.start.line!=i.range.end.line}const FormattingOptions={newLine:Formatting.newLine({allowMore:!0}),oneSpace:Formatting.oneSpace(),noSpace:Formatting.noSpace(),indent:Formatting.indent({allowMore:!0}),noIndent:Formatting.noIndent()};var LikeC4Formatter=class extends AbstractFormatter{options={quoteStyle:`auto`};extendedFormattingCommands=[];constructor(i){super(),i.shared.workspace.ConfigurationProvider.onConfigurationSectionUpdate(i=>this.onConfigurationUpdate(i.configuration.formatting))}doDocumentFormat(i,a,o){this.extendedFormattingCommands=[];let s=super.doDocumentFormat(i,a,o);return this.doExtendedFormatting(s),s}format(i){this.removeIndentFromTopLevelStatements(i),this.indentContentInBraces(i),this.normalizeQuotes(i),this.formatImports(i),this.formatSpecificationRule(i),this.formatGlobals(i),this.formatElementDeclaration(i),this.formatExtendElement(i),this.formatRelation(i),this.formatMetadataProperty(i),this.formatDeploymentNodeDeclaration(i),this.formatDeployedInstance(i),this.formatDeploymentRelation(i),this.formatExtendDeployment(i),this.formatView(i),this.formatViewRuleGroup(i),this.formatViewRuleGlobalStyle(i),this.formatViewRuleGlobalPredicate(i),this.formatIncludeExcludeExpressions(i),this.formatWhereExpression(i),this.formatWhereRelationExpression(i),this.formatWhereElementExpression(i),this.formatRelationExpression(i),this.formatAutolayoutProperty(i),this.formatWithPredicate(i),this.formatViewRuleStyle(i),this.formatLeafProperty(i),this.formatLinkProperty(i),this.formatNavigateToProperty(i),this.formatTags(i)}formatTags(i){this.on(i,isTags,(i,a)=>{let o=findNodesForProperty(i.$cstNode,`values`).filter(e$4).slice(1);a.cst(o).prepend(FormattingOptions.oneSpace),a.keywords(`,`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace)})}formatDeploymentRelation(i){this.on(i,isDeploymentRelation,(i,a)=>{let o=i?.source?.$cstNode?[i?.source?.$cstNode]:[];a.cst(o).append(FormattingOptions.oneSpace),a.keywords(`]->`).prepend(FormattingOptions.noSpace),a.keywords(`-[`).append(FormattingOptions.noSpace),a.nodes(...n$2([i.target,i.tags],e$4)).prepend(FormattingOptions.oneSpace),a.properties(`title`,`description`,`technology`).prepend(FormattingOptions.oneSpace)})}formatExtendDeployment(i){this.on(i,isExtendDeployment,(i,a)=>{a.keywords(`extend`).append(FormattingOptions.oneSpace)})}formatRelation(i){this.on(i,i=>isRelation(i)||isDeploymentRelation(i),(i,a)=>{let o=i?.source?.$cstNode?[i?.source?.$cstNode]:[];a.cst(o).append(FormattingOptions.oneSpace),a.keywords(`]->`).prepend(FormattingOptions.noSpace),a.keywords(`-[`).append(FormattingOptions.noSpace),a.nodes(...n$2([i.target,i.tags],e$4)).prepend(FormattingOptions.oneSpace),a.properties(`title`,`description`,`technology`).prepend(FormattingOptions.oneSpace)}),this.on(i,isDynamicViewStep,(i,a)=>{a.keywords(`->`,`<-`).surround(FormattingOptions.oneSpace),a.property(`dotKind`).prepend(FormattingOptions.oneSpace).append(FormattingOptions.oneSpace),a.keywords(`]->`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace),a.keywords(`-[`).prepend(FormattingOptions.oneSpace).append(FormattingOptions.noSpace),a.properties(`title`).prepend(FormattingOptions.oneSpace),(isDynamicStepChain(i)&&isMultiline(i.$cstNode)||isDynamicStepSingle(i)&&isDynamicStepChain(i.$container)&&isMultiline(i.$container.$cstNode))&&(a.property(`dotKind`).prepend(Formatting.indent({allowLess:!1,allowMore:!0,priority:2})),a.keywords(`->`,`-[`).prepend(Formatting.indent({allowLess:!1,allowMore:!0,priority:2})),i.custom?.$cstNode&&isMultiline(i.custom.$cstNode)&&a.property(`custom`).prepend({options:{allowLess:!1,allowMore:!0,priority:2},moves:[{tabs:1}]}))})}removeIndentFromTopLevelStatements(i){isLikeC4Grammar(i.$container)&&this.getNodeFormatter(i).keywords(`specification`,`model`,`views`,`likec4lib`,`global`,`deployments`,`import`).prepend(FormattingOptions.noIndent)}indentContentInBraces(i){if(isLikeC4Lib(i)||isSpecificationRule(i)||isSpecificationElementKind(i)||isSpecificationRelationshipKind(i)||isSpecificationDeploymentNodeKind(i)||isGlobals(i)||isGlobalStyle(i)||isGlobalStyleGroup(i)||isGlobalPredicateGroup(i)||isGlobalDynamicPredicateGroup(i)||isGlobalStyleGroup(i)||isModel(i)||isElementBody(i)||isExtendElementBody(i)||isRelationBody(i)||isRelationStyleProperty(i)||isMetadataBody(i)||isModelViews(i)||isElementViewBody(i)||isDynamicViewBody(i)||isDeploymentViewBody(i)||isViewRuleStyle(i)||isViewRuleGroup(i)||isCustomElementProperties(i)||isCustomRelationProperties(i)||isElementStyleProperty(i)||isDynamicViewParallelSteps(i)||isModelDeployments(i)||isDeploymentNodeBody(i)||isDeploymentRelationBody(i)||isDeployedInstanceBody(i)||isExtendDeploymentBody(i)){let a=this.getNodeFormatter(i),o=a.keywords(`{`);o.prepend(FormattingOptions.noIndent).prepend(FormattingOptions.oneSpace);let s=isMultiline(i.$cstNode),c=a.keywords(`}`),l=a.interior(o,c),d=null;for(let i of l.nodes){if(!s){a.cst([i]).surround(FormattingOptions.oneSpace);continue}(!d||!areOverlap(d,i))&&a.cst([i]).prepend(Formatting.newLine({allowMore:!0})).prepend(FormattingOptions.indent),d=i}s?c.prepend(FormattingOptions.noIndent).prepend(Formatting.newLine({allowMore:!0})):c.prepend(Formatting.oneSpace({allowLess:!0}))}}appendKeywordsWithSpace(i){this.on(i,isElementKind)?.keywords(`element`).append(FormattingOptions.oneSpace)}formatView(i){this.on(i,isElementView$1,(i,a)=>{(i.extends||i.viewOf||i.name)&&a.keywords(`view`).append(FormattingOptions.oneSpace),a.keywords(`of`,`extends`).surround(FormattingOptions.oneSpace)}),this.on(i,isDynamicView$1)?.keywords(`dynamic`,`view`).append(FormattingOptions.oneSpace),this.on(i,isDeploymentView$1)?.keywords(`deployment`,`view`).append(FormattingOptions.oneSpace)}formatLeafProperty(i){if(isElementStringProperty(i)||isRelationStringProperty(i)||isViewStringProperty(i)||isNotationProperty(i)||isNotesProperty(i)||isSpecificationElementStringProperty(i)||isSpecificationRelationshipStringProperty(i)||isColorProperty(i)||isLineProperty(i)||isArrowProperty(i)||isIconProperty(i)||isShapeProperty(i)||isBorderProperty(i)||isOpacityProperty(i)||isMultipleProperty(i)||isIconColorProperty(i)||isIconSizeProperty(i)||isIconPositionProperty(i)||isShapeSizeProperty(i)||isPaddingSizeProperty(i)||isTextSizeProperty(i)){let a=this.getNodeFormatter(i),o=a.keyword(`:`),s=a.keywords(`title`,`description`,`technology`,`summary`,`notation`,`notes`,`color`,`line`,`head`,`tail`,`icon`,`iconColor`,`iconSize`,`iconPosition`,`shape`,`border`,`opacity`,`multiple`,`size`,`padding`,`textSize`);o.nodes.length===0?s.append(FormattingOptions.oneSpace):o.prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace),a.keyword(`;`).prepend(FormattingOptions.noSpace).append(FormattingOptions.newLine)}}formatLinkProperty(i){this.on(i,isLinkProperty,(i,a)=>{a.keyword(`link`).append(FormattingOptions.oneSpace),a.property(`value`).append(FormattingOptions.oneSpace),a.keyword(`:`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace),a.keyword(`;`).prepend(FormattingOptions.noSpace).append(FormattingOptions.newLine)})}formatNavigateToProperty(i){this.on(i,isNavigateToProperty)?.property(`key`).append(FormattingOptions.oneSpace)}formatAutolayoutProperty(i){this.on(i,isViewRuleAutoLayout,(i,a)=>{a.keyword(`autoLayout`).append(FormattingOptions.oneSpace),a.property(`rankSep`).prepend(FormattingOptions.oneSpace),a.property(`nodeSep`).prepend(FormattingOptions.oneSpace)})}formatMetadataProperty(i){this.on(i,isMetadataAttribute,(i,a)=>{a.property(`key`).append(FormattingOptions.oneSpace),a.keyword(`:`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace),a.keyword(`;`).prepend(FormattingOptions.noSpace).append(FormattingOptions.newLine)})}formatElementDeclaration(i){this.on(i,isElement,(i,a)=>{let o=findNodeForProperty$1(i.$cstNode,`kind`),s=findNodeForProperty$1(i.$cstNode,`name`);s&&o&&(compareRanges(s,o)>0?a.cst([o]).append(FormattingOptions.oneSpace):(a.cst([s]).append(FormattingOptions.oneSpace),a.cst([o]).prepend(FormattingOptions.oneSpace))),a.properties(`props`).prepend(FormattingOptions.oneSpace)})}formatExtendElement(i){this.on(i,isExtendElement,(i,a)=>{a.keywords(`extend`).append(FormattingOptions.oneSpace)})}formatGlobals(i){this.on(i,isGlobalStyle,(i,a)=>{a.keyword(`style`).append(FormattingOptions.oneSpace),a.property(`id`).append(FormattingOptions.oneSpace)}),this.on(i,isGlobalStyleGroup,(i,a)=>{a.keyword(`styleGroup`).append(FormattingOptions.oneSpace)}),this.on(i,isGlobalPredicateGroup,(i,a)=>{a.keyword(`predicateGroup`).append(FormattingOptions.oneSpace)}),this.on(i,isGlobalDynamicPredicateGroup,(i,a)=>{a.keyword(`dynamicPredicateGroup`).append(FormattingOptions.oneSpace)})}formatImports(i){this.on(i,isImportsFromPoject,(i,a)=>{a.keyword(`import`).append(FormattingOptions.oneSpace),a.keywords(`{`,`}`,`from`).surround(FormattingOptions.oneSpace)}),this.on(i,isImported,(i,a)=>{a.keywords(`,`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace)})}formatSpecificationRule(i){if((isSpecificationElementKind(i)||isSpecificationRelationshipKind(i)||isSpecificationTag(i)||isSpecificationDeploymentNodeKind(i))&&this.getNodeFormatter(i).keywords(`element`,`relationship`,`tag`,`deploymentNode`).append(FormattingOptions.oneSpace),isSpecificationColor(i)){let a=this.getNodeFormatter(i);a.keyword(`color`).append(FormattingOptions.oneSpace),a.property(`name`).append(FormattingOptions.oneSpace)}}formatWithPredicate(i){(isFqnExprWith(i)||isRelationExprWith(i))&&this.getNodeFormatter(i).keyword(`with`).prepend(FormattingOptions.oneSpace)}formatDeploymentNodeDeclaration(i){this.on(i,isDeploymentNode$1,(i,a)=>{let o=findNodeForProperty$1(i.$cstNode,`kind`),s=findNodeForProperty$1(i.$cstNode,`name`);s&&o&&(compareRanges(s,o)>0?a.cst([o]).append(FormattingOptions.oneSpace):(a.cst([s]).append(FormattingOptions.oneSpace),a.cst([o]).prepend(FormattingOptions.oneSpace))),a.properties(`title`).prepend(FormattingOptions.oneSpace)})}formatDeployedInstance(i){this.on(i,isDeployedInstance,(i,a)=>{let o=i.$cstNode?.content.find(i=>i.text===`=`);o&&a.cst([o]).surround(FormattingOptions.oneSpace),a.keyword(`instanceOf`).append(FormattingOptions.oneSpace),a.property(`title`).prepend(FormattingOptions.oneSpace)})}formatViewRuleGlobalStyle(i){this.on(i,isViewRuleGlobalStyle,(i,a)=>{a.keywords(`global`,`style`).append(FormattingOptions.oneSpace)})}formatViewRuleGlobalPredicate(i){let a=this.getNodeFormatter(i);(isViewRuleGlobalPredicateRef(i)||isDynamicViewGlobalPredicateRef(i))&&a.keywords(`global`,`predicate`).append(FormattingOptions.oneSpace)}formatViewRuleGroup(i){this.on(i,isViewRuleGroup,(i,a)=>{a.keyword(`group`).append(FormattingOptions.oneSpace)})}formatViewRuleStyle(i){this.on(i,isViewRuleStyle)?.keyword(`style`).append(FormattingOptions.oneSpace),this.on(i,isDeploymentViewRuleStyle)?.keyword(`style`).append(FormattingOptions.oneSpace),this.on(i,isExpressions)?.keyword(`,`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace),this.on(i,isFqnExpressions)?.keyword(`,`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace)}formatWhereExpression(i){(isRelationExprWhere(i)||isFqnExprWhere(i))&&this.getNodeFormatter(i).keyword(`where`).append(FormattingOptions.oneSpace)}formatWhereRelationExpression(i){if(this.on(i,isWhereRelationExpression,(i,a)=>{a.property(`operator`).surround(FormattingOptions.oneSpace)}),this.on(i,isWhereRelationNegation,(i,a)=>{a.keyword(`not`).append(FormattingOptions.oneSpace)}),isWhereRelation(i)||isWhereRelationTag(i)||isWhereRelationKind(i)){let a=this.getNodeFormatter(i);a.property(`operator`).surround(FormattingOptions.oneSpace),a.property(`not`).surround(FormattingOptions.oneSpace)}}formatWhereElementExpression(i){if(this.on(i,isWhereElementExpression,(i,a)=>{a.property(`operator`).surround(FormattingOptions.oneSpace)}),this.on(i,isWhereElementNegation,(i,a)=>{a.keyword(`not`).append(FormattingOptions.oneSpace)}),isWhereElement(i)||isWhereElementTag(i)||isWhereElementKind(i)){let a=this.getNodeFormatter(i);a.property(`operator`).surround(FormattingOptions.oneSpace),a.property(`not`).surround(FormattingOptions.oneSpace)}}formatIncludeExcludeExpressions(i){if(isDynamicViewRule(i)||isViewRulePredicate(i)||isDeploymentViewRulePredicate(i)){let a=this.getNodeFormatter(i);(!i.$cstNode||!isMultiline(i.$cstNode))&&a.keywords(`include`,`exclude`).append(FormattingOptions.oneSpace)}if(isExpressions(i)){let a=this.getNodeFormatter(i),o=this.findPredicateExpressionRoot(i),s=o?.$cstNode&&isMultiline(o?.$cstNode);s&&a.property(`value`).prepend(FormattingOptions.indent),a.keyword(`,`).prepend(FormattingOptions.noSpace).append(s?FormattingOptions.newLine:FormattingOptions.oneSpace)}}formatRelationExpression(i){this.on(i,isIncomingRelationExpr,(i,a)=>{a.keyword(`->`).append(FormattingOptions.oneSpace)}),this.on(i,isInOutRelationExpr,(i,a)=>{a.keyword(`->`).prepend(FormattingOptions.oneSpace)}),this.on(i,isOutgoingRelationExpr,(i,a)=>{a.keywords(`->`,`<->`).prepend(FormattingOptions.oneSpace),a.keywords(`-[`).prepend(FormattingOptions.oneSpace).append(FormattingOptions.noSpace),a.keywords(`]->`).prepend(FormattingOptions.noSpace).append(FormattingOptions.oneSpace),a.property(`dotKind`).prepend(FormattingOptions.oneSpace).append(FormattingOptions.oneSpace)}),this.on(i,isDirectedRelationExpr,(i,a)=>{a.property(`target`).prepend(FormattingOptions.oneSpace)})}findPredicateExpressionRoot(i){let a=i.$container;for(;;){if(!a||isDynamicViewRule(a)||isViewRulePredicate(a)||isDeploymentViewRulePredicate(a))return a;a=a.$container}}on(i,a,o){let s=a(i)?this.getNodeFormatter(i):void 0;return o&&s&&o(i,s),s}doExtendedFormatting(i){let a=this.quotesNormalizerFactory(this.extendedFormattingCommands);for(let o of this.extendedFormattingCommands)switch(o.type){case`normalizeQuotes`:a(o,i);break;default:nonexhaustive(o.type)}}normalizeQuotes(i){if(this.options.quoteStyle===`ignore`)return;let a=null;a??=this.on(i,isStringProperty)?.property(`value`),a??=this.on(i,isElement)?.properties(`props`),a??=this.on(i,isImportsFromPoject)?.properties(`project`),a??=this.on(i,isRelation)?.properties(`title`,`technology`),a??=this.on(i,isViewRuleGroup)?.properties(`title`),a??=this.on(i,isDynamicViewStep)?.properties(`title`),a??=this.on(i,isDeploymentNode$1)?.properties(`title`),a??=this.on(i,isDeployedInstance)?.properties(`title`),a??=this.on(i,isDeploymentRelation)?.properties(`title`,`technology`),a??=this.on(i,isLinkProperty)?.properties(`title`),a&&this.extendedFormattingCommands.push({type:`normalizeQuotes`,region:a})}quotesNormalizerFactory(i){let a=this.options.quoteStyle==`auto`?this.getAutoQuoteStyle(i):this.options.quoteStyle;return(i,o)=>{let s=a===`single`?`"`:`'`,c=a===`single`?`'`:`"`,l=c.repeat(3),d=c,f=i.region.nodes.map(i=>{let a=i.text.startsWith(`"""`)||i.text.startsWith(`'''`)?l:d;return{range:i.range,newText:a+this.escapeQuotesInternalQuotes(i.text.slice(a.length,-a.length),s,c)+a}});o.push(...f)}}escapeQuotesInternalQuotes(i,a,o){let s=``,c=0;for(;c>=0;){let a=i.indexOf(o,c);if(a<0){s+=i.slice(c);break}s+=i.slice(c,a),c=a+1;let l=!1;for(;a>0&&i[a-1]==`\\`;)l=!l,a--;s+=l?o:`\\${o}`}return s}getAutoQuoteStyle(i){let a=i.flatMap(i=>i.region.nodes);return a.filter(i=>i.text[0]==`"`).length*2>=a.length?`double`:`single`}onConfigurationUpdate(i){this.options={...this.options,...i??{quoteStyle:`auto`}}}};const NoMCPServer={mcpServer:()=>new NoopLikeC4MCPServer,mcpServerFactory:()=>new NoopLikeC4MCPServerFactory};var NoopLikeC4MCPServer=class{get mcp(){throw Error(`NoopLikeC4MCPServer does not have a McpServer`)}get isStarted(){return!1}get port(){return NaN}start(){return Promise.resolve()}stop(){return Promise.resolve()}},NoopLikeC4MCPServerFactory=class{create(i){throw Error(`NoopLikeC4MCPServerFactory`)}},AstNodeDescriptionProvider=class extends DefaultAstNodeDescriptionProvider{constructor(i){super(i),this.services=i}createDescription(i,a,o){o??=getDocument$6(i);let s=super.createDescription(i,a,o);return isLikeC4Builtin(o.uri)||(o.likec4ProjectId??=this.services.shared.workspace.ProjectsManager.ownerProjectId(o),s.likec4ProjectId=o.likec4ProjectId),s}},IndexManager=class extends DefaultIndexManager{constructor(i){super(i),this.services=i}async updateContent(i,a){i.likec4ProjectId=this.services.workspace.ProjectsManager.ownerProjectId(i),await super.updateContent(i,a)}projectElements(i,a,o){let s=this.services.workspace.ProjectsManager;return stream(this.symbolIndex.keys()).filter(a=>o&&!o.has(a)?!1:s.isIncluded(i,a)).flatMap(i=>this.getFileDescriptions(i,a))}};const compare$1=compareNaturalHierarchically(`/`),ensureOrder=(i,a)=>compare$1(i.uri.path,a.uri.path),isLikeC4UserDocument=i=>isLikeC4LangiumDocument(i)&&isNotLikeC4Builtin(i);var LangiumDocuments=class extends DefaultLangiumDocuments{constructor(i){super(i),this.services=i}get projectsManager(){return this.services.workspace.ProjectsManager}addDocument(i){let a=i.uri.toString();if(this.documentMap.has(a))throw Error(`A document with the URI '${a}' is already present.`);let o=[...this.documentMap.values(),i].sort(ensureOrder);this.documentMap.clear();for(let i of o)this.documentMap.set(i.uri.toString(),i);isLikeC4UserDocument(i)&&(i.likec4ProjectId=this.projectsManager.ownerProjectId(i))}getDocument(i){let a=super.getDocument(i);return isLikeC4UserDocument(a)&&(a.likec4ProjectId=this.projectsManager.ownerProjectId(a)),a}get userDocuments(){return stream(this.documentMap.values()).filter(i=>isLikeC4UserDocument(i)&&!this.projectsManager.isExcluded(i))}get all(){return stream(this.documentMap.values()).map(i=>(isLikeC4UserDocument(i)&&(i.likec4ProjectId=this.projectsManager.ownerProjectId(i)),i))}projectDocuments(i){let a=this.services.workspace.ProjectsManager;return stream(this.documentMap.values()).filter(o=>isLikeC4UserDocument(o)&&a.isIncluded(i,o)?(o.likec4ProjectId=i,!0):!1)}groupedByProject(){let i=this.services.workspace.ProjectsManager;return t$3(this.userDocuments.toArray(),t(a=>(a.likec4ProjectId=i.ownerProjectId(a),a)),t$11(e(`likec4ProjectId`)))}resetProjectIds(){let i=[];for(let a of this.documentMap.values())delete a.likec4ProjectId,isLikeC4UserDocument(a)&&!this.projectsManager.isExcluded(a)&&i.push(a.uri);return i}},import_picomatch=__toESM(require_picomatch(),1);const logger$9=logger$16.getChild(`projects`);function isLangiumDocument(i){return typeof i==`object`&&`uri`in i&&`textDocument`in i}function normalizeUri(i){return isLangiumDocument(i)?i.uri.toString():typeof i==`string`?hasProtocol(i)?i:URI.file(i).toString():i.toString()}const compare=compareNaturalHierarchically(`/`,!0),compareUri=(i,a)=>compare(withoutTrailingSlash(i.path),withoutTrailingSlash(a.path));function isParentFolderFor(i){return a=>i.startsWith(isString(a)?a:a.folder)}function _overlaps(i,a){let o=isString(i)?i:i.folder,s=isString(a)?a:a.folder;return o.startsWith(s)||s.startsWith(o)}function overlaps(...i){return t$17(_overlaps,i)}function _includes(i,a){return a.startsWith(i.folder)||i.includePaths?.some(isParentFolderFor(a))?!_excludes(i,a):!1}function _excludes(i,a){return i.exclude?.(withoutProtocol(a))??!1}function includes(...i){return t$17(_includes,i)}function excludes(...i){return t$17(_excludes,i)}function ProjectFolder(i){return i=normalizeUri(i),withTrailingSlash(i)}const DefaultProject={id:`default`,config:{name:`default`,exclude:[`**/node_modules/**`]},exclude:(0,import_picomatch.default)(`**/node_modules/**`,{dot:!0}),includeConfig:{paths:[],maxDepth:3,fileThreshold:30}};function isExcludedByDefault(i){return DefaultProject.exclude(withoutProtocol(i))}function parseRegisterOptions(i){if(`configUri`in i){invariant$1(!e$8(i.configUri),`configUri is emptyish`);let a=URI.isUri(i.configUri)?i.configUri:URI.parse(normalizeUri(i.configUri)),o=ProjectFolder(UriUtils.dirname(a));return{configUri:a,folder:o,folderUri:URI.parse(o)}}invariant$1(!e$8(i.folderUri),`folderUri is emptyish`);let a=ProjectFolder(i.folderUri),o=URI.parse(a);return{configUri:UriUtils.joinPath(o,`likec4.config.json`),folder:a,folderUri:o}}var ProjectsManager=class i{static DefaultProjectId=DefaultProject.id;#e=[];#t=void 0;#n=void 0;#r=[];#i=new DefaultMap(a=>{if(a===i.DefaultProjectId){let i=this.getWorkspaceFolder(),o=UriUtils.joinPath(i,`.likec4rc`),s=ProjectFolder(i);return{id:a,config:DefaultProject.config,folder:s,folderUri:URI.parse(s),configUri:o,exclude:DefaultProject.exclude,includeConfig:DefaultProject.includeConfig}}return nonNullable$1(this.#r.find(i=>i.id===a),`Project ${a} not found`)});#a=new DefaultMap(i=>{let a=normalizeUri(i),o=this.#o.get(a);return o?excludes(o,a)?!this.#r.some(includes(a)):!1:isExcludedByDefault(a)});#o=new DefaultMap(i=>{let a=isParentFolderFor(i);return this.#r.find(a)??this.#r.find(includes(i))??null});constructor(i){this.services=i,logger$9.debug`created`}get defaultProjectId(){if(this.#t)return this.#t;if(!(this.#r.length>1))return t$4(this.#r,1)?this.#r[0].id:i.DefaultProjectId}set defaultProjectId(a){if(a!==this.#t){if(this.#n=void 0,!a||a===i.DefaultProjectId){logger$9.debug`reset default project ID`,this.#t=void 0;return}invariant$1(this.#r.find(i=>i.id===a),`Project "${a}" not found`),logger$9.debug`set default project ID to ${a}`,this.#t=a}}get default(){if(!this.#n){let a=this.defaultProjectId??i.DefaultProjectId;this.#n=this.#i.get(a)}return this.#n}get all(){if(t$4(this.#r,1)){let i=[...t(this.#r,e(`id`)),DefaultProject.id];if(this.#t){let a=i.findIndex(i=>i===this.#t);a>0&&(i.splice(a,1),i.unshift(this.#t))}return i}return[DefaultProject.id]}getProject(i){let a=typeof i==`string`?i:i.likec4ProjectId||this.ownerProjectId(i);return this.#i.get(a)}findOverlaped(i){let a=overlaps(ProjectFolder(i)),o=i=>a(i)||!!i.includePaths&&!!r$1(i.includePaths,a);return this.#r.filter(o)}ensureProjectId(a){return a===i.DefaultProjectId?this.defaultProjectId??i.DefaultProjectId:a?(invariant$1(this.#r.some(i=>a===i.id),`Project ID ${a} is not registered`),a):nonNullable$1(this.defaultProjectId,()=>`Specify exact project, known: [${t(this.#r,e(`id`)).join(`, `)}]`)}ensureProject(i){return i=this.ensureProjectId(i),this.getProject(i)}hasMultipleProjects(){return this.#r.length>1}isExcluded(...i){let a=i.length===1?i[0]:i[1];return isLangiumDocument(a)&&isLikeC4Builtin(a)?!0:i.length===1?this.#a.get(normalizeUri(a)):excludes(this.#i.get(i[0]),normalizeUri(a))}isIncluded(a,o){let s=normalizeUri(o);return t$4(this.#r,1)?a===i.DefaultProjectId?!this.#o.get(s)&&!isExcludedByDefault(s):includes(this.#i.get(a),normalizeUri(o)):!isExcludedByDefault(s)}async registerConfigFile(i,a){if(isExcludedByDefault(normalizeUri(i)))throw Error(`Failed to register project config, path ${i.fsPath} is excluded by: ${DefaultProject.config.exclude.map(i=>`"${i}"`).join(`, `)}`);try{let o=await this.services.workspace.FileSystemProvider.loadProjectConfig(i);return await this.registerProject({config:o,configUri:i},a)}catch(a){if(!isOperationCancelled(a))throw wrapError(a,`Failed to register project config ${i.fsPath}:\n`);return Promise.reject(a)}}async registerProject(i,a){let o=LikeC4ProjectConfigOps.validate(i.config),{configUri:s,folder:c,folderUri:l}=parseRegisterOptions(i),d=LikeC4ProjectConfigOps.normalizeInclude(o.include),f=this.#r.find(i=>i.folder===c);return f?(f.config.name!==o.name&&(f.id=this.uniqueProjectId(o.name),logger$9.info`re-register ${f.id}`),f.config=o,f.folder=c,f.folderUri=l,f.configUri=s,f.includeConfig=d):(f={id:this.uniqueProjectId(o.name),config:o,folder:c,configUri:s,folderUri:l,includeConfig:d},this.#r=t$3([...this.#r,f],t$9((i,a)=>compareUri(i.folderUri,a.folderUri))),logger$9.info`register ${f.id}`),this.updateIncludesExcludes(f),this.resetCaches(),this.#s?f:(this.notifyListeners(),await this.rebuildProject(f.id,a).catch(i=>isOperationCancelled(i)?Promise.reject(i):(logger$9.warn(`Failed to rebuild project {projectId} after config change`,{projectId:f.id,error:i}),Promise.resolve())),f)}ownerProjectId(a){return this.#o.get(normalizeUri(a))?.id??this.#t??i.DefaultProjectId}#s=null;async reloadProjects(i){return this.#s?(logger$9.debug`reload projects is already in progress, waiting`,await this.#s.catch(()=>{})):(logger$9.debug`schedule reload projects`,this.#s=Promise.resolve().then(()=>this._reloadProjects(i)).catch(i=>(isOperationCancelled(i)||logger$9.warn(`Failed to reload projects`,{error:i}),Promise.reject(i))).finally(()=>{this.#s=null,this.notifyListeners()}),await this.#s)}async _reloadProjects(i){let a=this.services.workspace.WorkspaceManager.workspaceFolders;if(!a||a.length===0){logger$9.warn(`Failed to reloadProjects, no workspace folders found`);return}logger$9.debug`start reload projects`;let o=[];for(let i of a){let a=URI.parse(i.uri);logger$9.debug`scan projects in ${a.fsPath}`;try{let i=await this.services.workspace.FileSystemProvider.scanProjectFiles(a);for(let s of i)logger$9.debug`found config ${UriUtils.relative(a,s.uri)}`,o.push(s.uri)}catch(i){logger$9.warn(`Failed on scanProjectFiles in {folder}`,{folder:a.fsPath,error:i})}}if(o.length===0){if(this.#r.length===0){logger$9.warning(`No config files found`);return}logger$9.warning(`No config files found, but {count} projects were registered before`,{count:this.#r.length})}o.sort(compareUri);let s=new Map(this.#r.map(i=>[i.configUri.toString(),i]));this.#r=[],this.#i.clear();for(let i of o)try{await this.registerConfigFile(i)}catch(a){logger$9.warn(loggable(a));let o=s.get(i.toString());o&&(logger$9.debug`Update failed, restore project ${o.id}`,await this.registerProject(o))}this.resetCaches(),this.notifyListeners(),await this.services.workspace.WorkspaceManager.rebuildAll(i)}uniqueProjectId(i){let a=new Set(t(this.#r,e(`id`))),o=i;if(!a.has(o))return o;logger$9.warn`Project "${i}" already exists, generating unique ID`;let s=1;for(;a.has(o);)o=`${i}-${s++}`;return o}resetCaches(){logger$9.trace(`resetCaches`),this.#n=void 0,this.#t&&!this.#r.some(i=>i.id===this.#t)&&(this.#t=void 0),this.#i.clear(),this.#o.clear(),this.#a.clear()}async rebuildProject(a,o){let s=this.#r.find(i=>i.id===a);if(!s)return a===i.DefaultProjectId?logger$9.info`Rebuilding all documents `:logger$9.warn`Project ${a} not found, rebuilding all`,await this.services.workspace.WorkspaceManager.rebuildAll(o);let c=logger$9.getChild(s.id),l=i=>includes(s,normalizeUri(i)),d=this.services.workspace.LangiumDocuments.resetProjectIds().filter(l);d.length!==0&&(c.info(`rebuild project documents: {docs}`,{docs:d.length}),this.resetCaches(),await this.services.workspace.DocumentBuilder.update(d,[],o).catch(i=>{c.warn(`Failed to rebuild project`,{error:i})}))}getAllIncludePaths(){let i=[];for(let a of this.#r)if(a.includePaths)for(let o of a.includePaths)i.push({projectId:a.id,includePath:o.uri,includeConfig:a.includeConfig});return i}onProjectsUpdate(i){return this.#e.push(i),Disposable.create(()=>{let a=this.#e.indexOf(i);a>=0&&this.#e.splice(a,1)})}getWorkspaceFolder(){try{return this.services.workspace.WorkspaceManager.workspaceUri}catch(i){return logger$9.warn(`Failed to get workspace URI, using default folder`,{error:i}),URI.file(`/`)}}notifyListeners(){for(let i of this.#e)try{i()}catch(i){logger$9.warn(loggable(i))}}updateIncludesExcludes(i){let a=i.config;switch(!0){case e$5(a.exclude):i.exclude=DefaultProject.exclude;break;case a.exclude&&t$4(a.exclude,1):i.exclude=(0,import_picomatch.default)(t(a.exclude,a=>(!isRelative(a)&&!a.startsWith(`**`)&&(a=joinURL(`**`,a)),cleanDoubleSlashes(joinRelativeURL(i.folderUri.path,a)))),{contains:!0,dot:!0});break;default:delete i.exclude}let o=i.includeConfig.paths;if(!t$4(o,1))return delete i.includePaths,i;i.includePaths=t(o,a=>{let o=UriUtils.resolvePath(i.folderUri,a);return{uri:o,folder:ProjectFolder(o)}}),logger$9.debug`project ${i.id} include paths: ${i.includePaths.map(i=>i.uri.fsPath).join(`, `)}`;for(let a of i.includePaths)for(let o of this.#r)o.id!==i.id&&(overlaps(a,o)&&logger$9.warn(`Project "{projectId}" include path "{includePath}" overlaps with project "{otherProjectId}" folder. Files in overlapping areas will only belong to one project.`,{projectId:i.id,includePath:a.folder,otherProjectId:o.id}),o.includePaths?.forEach(s=>{overlaps(a,s)&&logger$9.warn(`Project "{projectId}" include path "{includePath}" overlaps with project "{otherProjectId}" include path "{otherIncludePath}". Files in overlapping areas will only belong to one project.`,{projectId:i.id,includePath:a.folder,otherProjectId:o.id,otherIncludePath:s.folder})}));return i}},LikeC4WorkspaceManager=class extends DefaultWorkspaceManager{documentFactory;fileSystemProvider;#e=[];initialBuildOptions={eagerLinking:!0,validation:!0};constructor(i){super(i),this.services=i,this.documentFactory=i.workspace.LangiumDocumentFactory,this.fileSystemProvider=i.workspace.FileSystemProvider}async performStartup(i){this.folders??=i;let a=[];for(let o of i)try{let i=URI.parse(o.uri),s=await this.fileSystemProvider.scanProjectFiles(i);a.push(...s),this.services.workspace.FileSystemWatcher.watch(i.fsPath)}catch(i){logWarnError(i)}let o=this.services.workspace.ProjectsManager;for(let i of a)try{await o.registerConfigFile(i.uri)}catch(i){logWarnError(i)}return await super.performStartup(i)}async loadAdditionalDocuments(i,a){a(this.documentFactory.fromString(LibIcons,URI.parse(Uri)));let o=this.services.workspace.ProjectsManager.getAllIncludePaths(),s=0,c=[];for(let{projectId:i,includePath:a,includeConfig:s}of o)try{logger$16.debug`scanning include path ${a.fsPath} for project ${i}`;let o=await this.fileSystemProvider.readDirectory(a,{recursive:!0,maxDepth:s.maxDepth});c.push(...o),o.length===0&&logger$16.debug`loaded ${o.length} files from include path ${a.fsPath}`}catch(i){logger$16.warn(`Failed to scan include path ${a.fsPath}`,{error:i})}for(let i of n$5(c,i=>i.uri.path))try{a(await this.langiumDocuments.getOrCreateDocument(i.uri)),s++}catch(a){logger$16.warn(`Failed to load document ${i.uri.fsPath}`,{error:a})}if(o.length>0&&s>0){let i=Math.min(...o.map(i=>i.includeConfig.fileThreshold));s>i?logger$16.warn(`Loaded ${s} files from include paths (threshold: ${i}). Large include directories may slow workspace initialization. Consider adjusting "include.fileThreshold" or "include.maxDepth" in your project configuration.`):logger$16.info`loaded ${s} total files from ${o.length} include paths`}}includeEntry(i,a,o){let s=UriUtils.basename(a.uri);return a.isDirectory?!excludeNodeModules(s):a.isFile?(o.fileExtensions.includes(UriUtils.extname(a.uri))||o.fileNames.includes(s))&&!this.services.workspace.ProjectsManager.isExcluded(a.uri):!1}workspace(){return this.folders&&t$4(this.folders,1)?this.folders[0]:null}async rebuildAll(i){let a=this.services.workspace.LangiumDocuments.resetProjectIds();logger$16.info(`invalidate and rebuild all {docs} documents`,{docs:a.length}),this.forceCleanCaches(),await this.documentBuilder.update(a,[],i)}get workspaceUri(){let i=this.workspace();return invariant(i,`Workspace not initialized`),URI.parse(i.uri)}get workspaceURL(){let i=this.workspace();return invariant(i,`Workspace not initialized`),new URL(i.uri)}forceCleanCaches(){for(let i of this.#e)i();this.services.workspace.ManualLayouts.clearCaches(),this.services.workspace.Cache.clear()}onForceCleanCache(i){return this.#e.push(i),Disposable.create(()=>{this.#e=this.#e.filter(a=>a!==i)})}};init_main();const logger$8=logger$16.getChild(`LanguageServices`),isErrorDiagnostic=i=>i.severity===DiagnosticSeverity$1.Error;var DefaultLikeC4LanguageServices=class{builder;editor;projectsManager;constructor(i){this.services=i,this.builder=i.likec4.ModelBuilder,this.projectsManager=i.shared.workspace.ProjectsManager,this.editor=i.likec4.ModelChanges}get mcpServer(){let i=this.services.mcp.Server;return i instanceof NoopLikeC4MCPServer?null:i}get views(){return this.services.likec4.Views}get workspaceUri(){return this.services.shared.workspace.WorkspaceManager.workspaceUri}projects(){let i=this.services.shared.workspace.ProjectsManager,a=t$3(this.services.shared.workspace.LangiumDocuments.groupedByProject(),t$2(),t(([a,o])=>{let s=a,{folderUri:c,config:l}=i.getProject(s);return{id:s,folder:c,title:l.title??l.name,documents:t(o,e(`uri`)),config:l}}));if(t$4(a,2)&&i.defaultProjectId){let o=a.findIndex(a=>a.id===i.defaultProjectId);if(o>0){let[i]=a.splice(o,1);return[i,...a]}return a}if(t$4(a,1))return a;let{id:o,folderUri:s,config:c}=i.default;return[{id:o,folder:s,title:c.title??c.name,documents:[],config:c}]}project(i){let{id:a,folderUri:o,config:s}=this.projectsManager.ensureProject(i),c=t(this.services.shared.workspace.LangiumDocuments.projectDocuments(a).toArray(),e(`uri`));return{id:a,folder:o,title:s.title??s.name,documents:c,config:s}}async diagrams(i,a){let o=this.projectsManager.ensureProjectId(i);return await this.views.diagrams(o,a)}async computedModel(i,a){let o=this.projectsManager.ensureProjectId(i);return await this.builder.computeModel(o,a)}async layoutedModel(i,a){let o=this.projectsManager.ensureProjectId(i),s=await this.builder.computeModel(o,a);if(!s)throw Error(`Failed to compute model, empty project?`);let c=await this.views.layoutAllViews(o,a);return LikeC4Model.create({...s.$data,_stage:`layouted`,views:t$3(c,t(e(`diagram`)),t$6(e(`id`)))})}async projectsOverview(i){let a=this.services.shared.workspace.ProjectsManager.all,o=[];for(let s of a){let a=await this.builder.computeModel(s,i);if(i?.isCancellationRequested)throw Error(`Operation cancelled`);if(a===LikeC4Model.EMPTY){logger$8.debug(`Project ${s} is empty, skipping`);continue}o.push(a)}if(!t$4(o,1))throw Error(`No models found`);let s=computeProjectsView(o);return await this.views.layouter.layoutProjectsView(s)}getErrors(){return t$3(this.services.shared.workspace.LangiumDocuments.userDocuments.toArray(),t$7(i=>t$3(i.diagnostics??[],n$2(isErrorDiagnostic),t(({message:a,range:o})=>({message:a,line:o.start.line,range:o,sourceFsPath:i.uri.fsPath})))))}locate(i){switch(!0){case`element`in i:return this.services.likec4.ModelLocator.locateElement(i.element,i.projectId);case`relation`in i:return this.services.likec4.ModelLocator.locateRelation(i.relation,i.projectId);case`view`in i:return this.services.likec4.ModelLocator.locateView(i.view,i.projectId);case`deployment`in i:return this.services.likec4.ModelLocator.locateDeploymentElement(i.deployment,i.projectId);default:nonexhaustive(i)}}async dispose(){try{logger$8.debug(`disposing LikeC4LanguageServices`),await this.services.shared.workspace.FileSystemWatcher.dispose(),this.services.mcp.Server.isStarted&&await this.services.mcp.Server.stop(),this.services.Rpc.dispose(),this.services.likec4.ModelBuilder.dispose()}catch(i){logger$8.error(loggable(i))}finally{logger$8.debug(`LikeC4LanguageServices disposed`)}}},ADisposable=class{toDispose=[];isDisposed=!1;onDispose(...i){this.toDispose.push(...i)}dispose(){this.throwIfDisposed(),this.isDisposed=!0;let i;for(;i=this.toDispose.pop();)try{i.dispose()}catch(i){logWarnError(i)}}throwIfDisposed(){if(this.isDisposed)throw Error(`This has already been disposed`)}};function elementRef(i){try{let a=isStrictFqnElementRef(i)?i.el.ref:i.modelElement.value.ref;return a?.$type===`Imported`&&(a=a.imported.ref),a?.$type===`Element`?a:void 0}catch{return}}function readStrictFqn(i){let a=[i.$type===`StrictFqnRef`?i.value.$refText:i.el.$refText],o=i.parent;for(;o;)a.push(o.$type===`StrictFqnRef`?o.value.$refText:o.el.$refText),o=o.parent;return a.length===1?a[0]:a.reverse().join(`.`)}function referenceableParent(i){for(;i.parent;)i=i.parent;return i.value.ref??null}function instanceRef(i){let a;for(;a=i.value?.ref;){if(isDeploymentNode$1(a))return null;if(isDeployedInstance(a))return a;if(e$5(i.parent))return null;i=i.parent}return null}function importsRef(i){let a=referenceableParent(i);return a?.$type===`Imported`?a:null}function isReferenceToDeploymentModel(i){let a;for(;a=i.value?.ref;){if(isDeploymentElement(a))return!0;if(e$5(i.parent))return!1;i=i.parent}return!1}function projectIdFrom(i){if(isImported(i)){for(;i.$type===`Imported`&&i.$container;)i=i.$container;invariant(isImportsFromPoject(i))}if(isImportsFromPoject(i))return i.project;let a=isAstNode(i)?getDocument$6(i):i;return a.likec4ProjectId?a.likec4ProjectId:(logger$16.warn`Document ${a.uri.fsPath} does not have a project ID assigned, this may lead to unexpected behavior.`,ProjectsManager.DefaultProjectId)}function stringHash$1(...i){return stringHash(i.length>1?i.join(`:::`):i[0])}function safeCall(i){try{return i()}catch(i){logger$16.trace(`Safe call failed`,{error:i});return}}function performanceNow(){try{return globalThis.performance.now()}catch{return Date.now()}}function performanceMark(){let i=performanceNow();return{get ms(){return performanceNow()-i},get pretty(){return prettyMilliseconds(performanceNow()-i)}}}var LikeC4CodeLensProvider=class{constructor(i){this.services=i}async provideCodeLens(i,a,o){if(isLikeC4LangiumDocument(i))return i.state<DocumentState.Linked&&(logger$16.debug(`Waiting for document ${i.uri.path} to be Linked`),await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Linked,i.uri,o),logger$16.debug(`Document is linked`)),i.parseResult.value.views.flatMap(i=>i.views).flatMap(i=>{let a=ViewOps.readId(i),o=i.$cstNode?.range;if(!o||!a)return[];let s=projectIdFrom(i);return{range:{start:o.start,end:{line:o.start.line,character:o.start.character+4}},command:{command:`likec4.open-preview`,arguments:[a,s],title:`open preview`}}})}};init_main();const STYLE_FIELDS=[`color`,`shape`,`icon`,`iconColor`,`iconSize`,`iconPosition`,`border`,`opacity`,`multiple`,`size`,`textSize`].join(`,`);function isCompletionForPojectName(i,a){return isRuleCall(a.feature)&&a.property===`project`&&isImportsFromPoject(i.node)}var LikeC4CompletionProvider=class extends DefaultCompletionProvider{constructor(i){super(i),this.services=i}completionOptions={triggerCharacters:[`.`,`#`]};completionFor(i,a,o){switch(!0){case isKeyword(a.feature):return this.completionForKeyword(i,a.feature,o);case isCrossReference(a.feature)&&!!i.node:return this.completionForCrossReference(i,a,o);case isCompletionForPojectName(i,a):return this.completionForImportedProject(i,o)}}completionForKeyword(i,a,o){if(this.filterKeyword(i,a))switch(!0){case a.value===`import`:o(i,{label:a.value,kind:CompletionItemKind.Snippet,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} { $0 } from '\${1|${this.services.shared.workspace.ProjectsManager.all.join(`,`)}|}'`});break;case a.value===`deployment`&&hasContainerOfType(i.node,isModelViews):o(i,{label:a.value,detail:`Insert deployment view`,kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:["deployment view ${1:view_${TM_FILENAME_BASE}_${CURRENT_SECOND}} {"," title '${2:Untitled}'",` `,` include $0`,`}`].join(`
|
|
40
|
+
`)});break;case[`title`,`description`,`technology`,`link`].includes(a.value):o(i,{label:a.value,detail:`Insert ${a.value} property`,kind:CompletionItemKind.Property,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} '\${0}'`});break;case a.value===`color`:o(i,{label:a.value,kind:CompletionItemKind.Property,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} \${1|${ThemeColors.join(`,`)}|}$0`});break;case a.value===`opacity`:o(i,{label:a.value,kind:CompletionItemKind.Property,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} \${0:100}%`});break;case[`views`,`specification`,`model`,`deployment`,`with`].includes(a.value):o(i,{label:a.value,detail:`Insert ${a.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} {\n\t$0\n}`});break;case a.value===`group`:o(i,{label:a.value,detail:`Insert group block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:["group '${1:Title}' {",` $0`,`}`].join(`
|
|
41
|
+
`)});break;case[`par`,`parallel`].includes(a.value):o(i,{label:a.value,detail:`Insert block of parallel steps`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:[`${a.value} {`,` $0`,`}`].join(`
|
|
42
|
+
`)});break;case a.value===`dynamic`&&hasContainerOfType(i.node,isModelViews):o(i,{label:a.value,detail:`Insert dynamic view`,kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:["dynamic view ${1:view_${TM_FILENAME_BASE}_${CURRENT_SECOND}} {"," title '${2:Untitled}'",` `,` $0`,`}`].join(`
|
|
43
|
+
`)});break;case a.value===`style`&&i.node&&hasContainerOfType(i.node,isGlobalStyle):o(i,{label:a.value,detail:`Insert ${a.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} \${1:name} \${2:*} {\n\t\${3|${STYLE_FIELDS}|} $0\n}`});break;case a.value===`style`&&i.node&&hasContainerOfType(i.node,t$18([isModelViews,isGlobalStyleGroup])):o(i,{label:a.value,detail:`Insert ${a.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} \${1:*} {\n\t\${2|${STYLE_FIELDS}|} $0\n}`});break;case a.value===`style`:o(i,{label:a.value,detail:`Insert ${a.value} block`,kind:CompletionItemKind.Module,insertTextFormat:InsertTextFormat.Snippet,insertText:`${a.value} {\n\t\${1|${STYLE_FIELDS}|} $0\n}`});break;case a.value===`extend`:o(i,{label:a.value,detail:`Extend another view`,kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:`extend $1 {
|
|
44
|
+
$0
|
|
45
|
+
}`});break;case a.value===`autoLayout`:o(i,{label:a.value,kind:CompletionItemKind.Property,insertTextFormat:InsertTextFormat.Snippet,insertText:"autoLayout ${1|TopBottom,BottomTop,LeftRight,RightLeft|}$0"});break;case a.value===`mode`:o(i,{label:a.value,kind:CompletionItemKind.Property,insertTextFormat:InsertTextFormat.Snippet,insertText:"mode ${1|sequence,diagram|}$0"});break;case[`include`,`exclude`].includes(a.value):o(i,{label:a.value,kind:CompletionItemKind.Operator,detail:`Insert ${a.value} predicate`,insertTextFormat:InsertTextFormat.PlainText,insertText:`${a.value} `});break;default:o(i,{label:a.value,kind:this.getKeywordCompletionItemKind(a),detail:`Keyword`,sortText:`1`})}}completionForImportedProject(i,a){let o=this.services.shared.workspace.ProjectsManager,s=i.document.textDocument,c={start:s.positionAt(i.tokenOffset),end:s.positionAt(i.tokenEndOffset)},l=s.getText(c),d=e$7(l)?`'`:l.substring(0,1);for(let s of o.all){let o=d+s+d;a(i,{label:s,kind:CompletionItemKind.Folder,insertText:o,filterText:o,textEdit:TextEdit$1.replace(c,o),detail:`Project`,sortText:`0_`+s})}}},import_main$2=require_main(),LikeC4DocumentHighlightProvider=class extends DefaultDocumentHighlightProvider{createDocumentHighlight(i){return import_main$2.DocumentHighlight.create(i.segment.range,import_main$2.DocumentHighlightKind.Read)}},LikeC4DocumentLinkProvider=class{constructor(i){this.services=i}async getDocumentLinks(i,a,o){return!isLikeC4LangiumDocument(i)||this.services.shared.workspace.ProjectsManager.isExcluded(i)?[]:streamAllContents$1(i.parseResult.value).filter(isLinkProperty).map(a=>{try{let o=findNodeForProperty$1(a.$cstNode,`value`)?.range,s=o&&this.resolveLink(i,a.value);if(s&&hasProtocol(s))return{range:o,target:s}}catch(i){logWarnError(i)}return null}).nonNullable().toArray()}resolveLink(i,a){if(hasProtocol(a)||hasLeadingSlash(a))return a;if(isRelative(a))return joinRelativeURL(i.uri.toString(),`../`,a);let o=this.services.shared.workspace.ProjectsManager.getProject(i).folderUri;return joinRelativeURL(o.toString(),a)}relativeLink(i,a){if(hasLeadingSlash(a))return withoutLeadingSlash(a);if(isRelative(a)){let o=this.services.shared.workspace.ProjectsManager.getProject(i).folderUri.toString(),s=new URL(i.uri.toString());return withoutLeadingSlash(withoutBase(new URL(a,s).toString(),o))}return null}};init_main();const logger$7=logger$16.getChild(`DocumentSymbolProvider`);var LikeC4DocumentSymbolProvider=class{nodeKindProvider;nameProvider;parser;locator;constructor(i){this.services=i,this.nodeKindProvider=i.shared.lsp.NodeKindProvider,this.parser=i.likec4.ModelParser,this.locator=i.likec4.ModelLocator,this.nameProvider=i.references.NameProvider}async getSymbols(i,a,o){if(!isLikeC4LangiumDocument(i)||this.services.shared.workspace.ProjectsManager.isExcluded(i))return[];i.state<DocumentState.Linked&&(logger$7.debug(`Waiting for document ${i.uri.path} to be Linked`),await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Linked,i.uri,o),logger$7.debug(`document is Linked`));let{parseResult:{value:{specifications:s,models:c,deployments:l,views:d,likec4lib:f}}}=i;return[...f.map(i=>()=>this.getLikec4LibSymbol(i)),...s.map(i=>()=>this.getSpecSymbol(i)),...c.map(i=>()=>this.getModelSymbol(i)),...l.map(i=>()=>this.getDeploymentModelSymbol(i)),...d.map(i=>()=>this.getModelViewsSymbol(i))].flatMap(i=>{try{return i()??[]}catch(i){return logWarnError(i),[]}})}getLikec4LibSymbol(i){let a=i?.$cstNode;if(!a)return[];let o=i.icons.map(i=>this.getLibIconSymbol(i)).filter(e$4);return o.length===0?[]:[{kind:SymbolKind.Namespace,name:`icons`,range:a.range,selectionRange:findNodeForKeyword$3(a,`icons`)?.range??a.range,children:o}]}getSpecSymbol(i){let a=i?.$cstNode;if(!a)return[];let o=findNodeForProperty$1(a,`name`);if(!o)return[];let s=t$3([...i.elements,...i.tags,...i.relationships],t(i=>{try{if(isSpecificationElementKind(i)||isSpecificationRelationshipKind(i)||isSpecificationDeploymentNodeKind(i))return this.getKindSymbol(i);if(isSpecificationTag(i))return this.getTagSymbol(i)}catch(i){return logWarnError(i),null}nonexhaustive(i)}),n$2(e$4));return s.length===0?[]:[{kind:SymbolKind.Namespace,name:i.name,range:a.range,selectionRange:o.range,children:s}]}getModelSymbol(i){let a=i.$cstNode;if(!a)return[];let o=findNodeForProperty$1(a,`name`);return o?[{kind:this.symbolKind(i),name:i.name,range:a.range,selectionRange:o.range,children:i.elements.flatMap(i=>isExtendRelation(i)?[]:this.getElementsSymbol(i))}]:[]}getDeploymentModelSymbol(i){let a=i.$cstNode;if(!a)return[];let o=findNodeForProperty$1(a,`name`);return o?[{kind:this.symbolKind(i),name:i.name,range:a.range,selectionRange:o.range,children:i.elements.flatMap(i=>this.getDeploymentElementSymbol(i))}]:[]}getElementsSymbol(i){try{if(isExtendElement(i))return this.getExtendElementSymbol(i);if(isElement(i))return this.getElementSymbol(i)}catch(i){logWarnError(i)}return[]}getExtendElementSymbol(i){let a=i.$cstNode,o=i.element.$cstNode,s=i.body;return!a||!o?[]:[{kind:this.symbolKind(i),name:readStrictFqn(i.element),range:a.range,selectionRange:o.range,children:s.elements.flatMap(i=>this.getElementsSymbol(i))}]}getElementSymbol(i){let a=i.$cstNode,o=findNodeForProperty$1(a,`name`);if(!o||!a)return[];let s=i.name,c=i.kind.$refText;return[{kind:this.symbolKind(i),name:s,range:a.range,selectionRange:o.range,detail:c,children:i.body?.elements.flatMap(i=>this.getElementsSymbol(i))??[]}]}getModelViewsSymbol(i){let a=i.$cstNode,o=findNodeForProperty$1(a,`name`);return!o||!a?[]:[{kind:this.symbolKind(i),name:i.name,range:a.range,selectionRange:o.range,children:i.views.flatMap(i=>this.getViewSymbol(i))}]}getKindSymbol(i){return!i.$cstNode||!i.kind.$cstNode||e$7(i.kind.name)?null:{kind:this.symbolKind(i),name:i.kind.name,range:i.$cstNode.range,selectionRange:i.kind.$cstNode.range}}getTagSymbol(i){return!i.$cstNode||!i.tag.$cstNode||e$7(i.tag.name)?null:{kind:this.symbolKind(i),name:`#`+i.tag.name,range:i.$cstNode.range,selectionRange:i.tag.$cstNode.range}}getLibIconSymbol(i){return!i.$cstNode||e$7(i.name)?null:{kind:this.symbolKind(i),name:i.name,range:i.$cstNode.range,selectionRange:i.$cstNode.range}}getViewSymbol(i){let a=i?.$cstNode;if(!a)return[];let o=i.name?findNodeForProperty$1(a,`name`):null;return o?[{kind:this.symbolKind(i),name:o.text,range:a.range,selectionRange:o.range,children:[]}]:[]}getDeploymentElementSymbol(i){try{if(isDeploymentNode$1(i))return this.getDeploymentNodeSymbol(i);if(isDeployedInstance(i))return this.getDeployedInstanceSymbol(i);if(isExtendDeployment(i))return[]}catch(i){logWarnError(i)}return[]}getDeploymentNodeSymbol(i){let a=i.$cstNode,o=this.nameProvider.getNameNode(i);if(!o||!a)return[];let s=this.nameProvider.getNameStrict(i),c=i.kind.$refText;return[{kind:this.symbolKind(i),name:s,range:a.range,selectionRange:o.range,detail:c,children:i.body?.elements.flatMap(i=>this.getDeploymentElementSymbol(i))??[]}]}getDeployedInstanceSymbol(i){let a=i.$cstNode,o=this.nameProvider.getNameNode(i);if(!o||!a)return[];let s=getDocument$6(i),c=this.parser.forDocument(s).parseDeployedInstance(i),l=this.nameProvider.getNameStrict(i),d=`instance of `+c.element.model;return[{kind:this.symbolKind(i),name:l,range:a.range,selectionRange:o.range,detail:d,children:[]}]}symbolKind(i){return this.nodeKindProvider.getSymbolKind(i)}};const HR=`
|
|
46
|
+
---
|
|
47
|
+
`;var LikeC4HoverProvider=class extends AstNodeHoverProvider{parser;locator;constructor(i){super(i),this.services=i,this.parser=i.likec4.ModelParser,this.locator=i.likec4.ModelLocator}getAstNodeHoverContent(i){if(isTag(i))return{contents:{kind:`markdown`,value:"tag `"+i.name+"`"}};if(isElementKind(i))return{contents:{kind:`markdown`,value:"element kind `"+i.name+"`"}};if(isDeploymentNodeKind(i))return{contents:{kind:`markdown`,value:"deployment node `"+i.name+"`"}};if(isRelationshipKind(i))return{contents:{kind:`markdown`,value:"relationship kind `"+i.name+"`"}};try{if(isElement(i))return this.getElementHover(i);if(isDeploymentNode$1(i))return this.getDeploymentNodeHover(i);if(isDeployedInstance(i))return this.getDeployedInstanceHover(i)}catch(i){logger$16.debug(loggable(i))}}getElementHover(i){let a=this.locator.getParsedElement(i);if(!a)return;let o=a.element,s=[`<sup>\`${o.id}\`</sup> `,`### ${o.title} `],c=preferSummary(o);c&&s.push(``,(c.md??c.txt).split(`
|
|
48
|
+
`).join(`
|
|
49
|
+
`));let l=this.services.likec4.LastSeen.model(a.projectId)?.findElement(o.id),d=l&&this.getElementModelHover(l,a.projectId);return s.push(d||`
|
|
50
|
+
<small>_Model not processed yet, open any view to trigger_</small> `),{contents:{kind:`markdown`,value:s.join(`
|
|
51
|
+
`)}}}getElementModelHover(i,a){let o=[],s=[...i.incoming(`direct`)].length,c=[...i.outgoing(`direct`)].length;(s>0||c>0)&&o.push(HR,`<small>**${s}** incoming, **${c}** outgoing relationships</small> `);let d=i=>{let o=[i.id,a],s=URI.parse(`command:likec4.open-preview?${encodeURIComponent(JSON.stringify(o))}`);return` - [${i.titleOrId}](${s})`},f=[...i.scopedViews()].map(d);f.length>0&&o.push(HR,`<small>Element views:</small>`,...f);let p=[...i.views()].map(a=>a.isScopedElementView()&&a.viewOf===i?null:d(a)).filter(e$1);if(p.length>0){let i=f.length>0?`Also appears in views:`:`Appears in views:`;o.push(f.length>0?``:HR,`<small>${i}</small>`,...p,` `)}return o.length>0?o.join(`
|
|
52
|
+
`):void 0}getDeploymentNodeHover(i){let a=getDocument$6(i),o=this.parser.forDocument(a).parseDeploymentNode(i),s=[o.id+` `];o.title!==i.name&&s.push(`### ${o.title}`),s.push("deployment node `"+o.kind+"` ");let c=preferSummary(o);return c&&s.push(``,c.md??c.txt),{contents:{kind:`markdown`,value:s.join(`
|
|
53
|
+
`)}}}getDeployedInstanceHover(i){let a=getDocument$6(i),o=this.parser.forDocument(a).parseDeployedInstance(i),[s,c]=FqnRef.isImportRef(o.element)?[o.element.project,o.element.model]:[a.likec4ProjectId,o.element.model],l=s?this.locator.getParsedElement(c,s):this.locator.getParsedElement(c),d=[o.id+` `,`instance of \`${FqnRef.flatten(o.element)}\``];return l&&d.push(`### ${l.element.title}`,"element kind `"+l.element.kind+"` "),{contents:{kind:`markdown`,value:d.join(`
|
|
54
|
+
`)}}}},import_main$1=require_main$1(),LikeC4CodeActionProvider=class{getCodeActions(i,a){let o=a.context.diagnostics,s=[];for(let c of o)c.code===`manual-layout-v1`&&s.push({title:`Migrate Manual Layouts`,command:import_main$1.Command.create(`Migrate Manual Layouts`,`likec4.migrate-manual-layouts`),edit:{changes:{[i.textDocument.uri]:[import_main$1.TextEdit.insert(a.range.start,``)]}},kind:`quickfix`,isPreferred:!0,diagnostics:[c]});return s.length>0?s:void 0}};init_main();const logger$6=logger$16.getChild(`SemanticTokenProvider`),SemanticTypes={...SemanticTokenTypes},SemanticModifiers={...SemanticTokenModifiers};function createSemanticTypeMethods(i){let a=[],o=new Proxy({},{get(s,c){if(c===`modifier`)return i=>(a.push(i),o);if(c in SemanticModifiers)return a.push(SemanticModifiers[c]),o;if(c in SemanticTypes)return()=>i(SemanticTypes[c],a);throw Error(`Unknown semantic token type or modifier: ${c}`)}});return o}const PRUNE=`Stop Highlighting`,stopHighlight=()=>{throw PRUNE};var LikeC4SemanticTokenProvider=class extends AbstractSemanticTokenProvider{rules=[];constructor(i){super(i),this.services=i,this.initRules()}initRules(){this.rules=[];let i=(i,a)=>{let o={predicate:i,highlightFn:a};this.rules.push(o)};i(isRelationshipKind,i=>{i.property(`name`).function()}),i(isAnyOf$1(isRelation,isOutgoingRelationExpr,isDeploymentRelation),i=>{i.property(`kind`).function()}),i(isLibIcon,i=>{i.property(`name`).definition.function(),stopHighlight()}),i(isAnyOf$1(isNavigateToProperty,isRelationNavigateToProperty),i=>{i.property(`value`).readonly.definition.interface(),stopHighlight()}),i(isWildcardExpression,i=>{i.cst().readonly.definition.variable(),stopHighlight()}),i(isFqnRefExpr,i=>{i.node.selector&&(i.node.ref.parent?i.property(`selector`).property():i.property(`selector`).readonly.definition.variable())}),i(isTagRef,i=>{i.cst().type(),stopHighlight()}),i(isRelationKindDotRef,i=>{i.cst().function(),stopHighlight()}),i(isWhereRelationKind,i=>{e$4(i.node.value)&&i.property(`value`).function()}),i(isAnyOf$1(isWhereElement,isWhereRelation),i=>{e$4(i.node.value)&&i.property(`value`).readonly.definition.type()}),i(isAnyOf$1(isWhereRelationParticipantKind,isWhereRelationParticipantTag),i=>{i.property(`participant`).keyword()}),i(isElementKindExpression,i=>{e$4(i.node.kind)&&i.property(`kind`).definition.type()}),i(isAnyOf$1(isGlobalStyleGroup,isGlobalStyle),i=>{i.property(`id`).readonly.definition.variable()}),i(isViewRuleGlobalStyle,i=>{i.property(`style`).readonly.definition.variable()}),i(isAnyOf$1(isGlobalPredicateGroup,isGlobalDynamicPredicateGroup),i=>{i.property(`name`).readonly.definition.variable()}),i(isViewRuleGlobalPredicateRef,i=>{i.property(`predicate`).readonly.definition.variable()}),i(isElementTagExpression,i=>{e$4(i.node.tag)&&i.property(`tag`).definition.type()}),i(isAnyOf$1(isFqnRef,isStrictFqnRef),i=>{if(i.node.parent){i.property(`value`).property();return}let a=i.node.$cstNode?.text;a!==`this`&&a!==`it`&&i.property(`value`).readonly.definition.variable(),stopHighlight()}),i(isStrictFqnElementRef,i=>{i.node.parent?i.property(`el`).property():(i.property(`el`).readonly.definition.variable(),stopHighlight())}),i(isSpecificationColor,i=>{i.keyword(`color`).keyword(),i.property(`name`).readonly.declaration.type()}),i(isSpecificationTag,i=>{e$4(i.node.color)&&i.keyword(`color`).property()}),i(isAnyOf$1(isSpecificationElementKind,isSpecificationRelationshipKind,isSpecificationDeploymentNodeKind),i=>{i.property(`kind`).readonly.declaration.type()}),i(isTag,i=>{i.property(`name`).definition.type()}),i(isOpacityProperty,i=>{i.property(`value`).number()}),i(isIconProperty,i=>{if(i.node.libicon||i.node.value===`none`){i.property(i.node.libicon?`libicon`:`value`).defaultLibrary.enum();return}i.property(`value`).string()}),i(isLinkProperty,i=>{e$4(i.node.value)&&i.property(`value`).string()}),i(isColorProperty,i=>{e$4(i.node.customColor)&&i.property(`customColor`).enum(),e$4(i.node.themeColor)&&i.property(`themeColor`).enum()}),i(isIconColorProperty,i=>{e$4(i.node.customColor)&&i.property(`customColor`).enum(),e$4(i.node.themeColor)&&i.property(`themeColor`).enum()}),i(isAnyOf$1(isShapeProperty,isArrowProperty,isLineProperty,isBorderProperty,isSizeProperty,isIconPositionProperty,isDynamicViewDisplayVariantProperty),i=>{e$4(i.node.value)&&i.property(`value`).enum()})}async semanticHighlight(i,a,o=import_main$1.CancellationToken.None){return i.state<DocumentState.Linked&&await this.ensureState(i,o),await super.semanticHighlight(i,a,o)}async semanticHighlightRange(i,a,o=import_main$1.CancellationToken.None){return i.state<DocumentState.Linked&&await this.ensureState(i,o),await super.semanticHighlightRange(i,a,o)}async semanticHighlightDelta(i,a,o=import_main$1.CancellationToken.None){return i.state<DocumentState.Linked&&await this.ensureState(i,o),await super.semanticHighlightDelta(i,a,o)}async ensureState(i,a){i.state<DocumentState.Linked&&(logger$6.debug`waiting for document ${i.uri.path} to be ${`Linked`}`,await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Linked,i.uri,a),logger$6.debug`document ${i.uri.path} is ${`Linked`}`)}highlightElement(i,a){if(isAnyOf$1(isElement,isDeploymentNode$1,isDeployedInstance)(i))return this.highlightNameAndKind(i);if(isLikeC4View(i))return this.highlightView(i);isAnyProperty(i)&&!isAnyOf$1(isMetadataProperty,isElementStyleProperty,isRelationStyleProperty)(i)&&e$4(i.key)&&a({node:i,property:`key`,type:SemanticTokenTypes.property});let o;for(let{predicate:a,highlightFn:s}of this.rules)if(a(i))try{o??=this.mark(i),s(o)}catch(a){if(a===PRUNE)return`prune`;logger$6.warn(`Error highlighting node of type ${i._type}`,{error:a})}}highlightNameAndKind(i){if(this.mark(i).property(`name`).declaration.readonly.variable(),isDeployedInstance(i)||this.mark(i).property(`kind`).keyword(),isElement(i)){i.props.length>0&&this.mark(i).property(`props`).string();return}i.title&&this.mark(i).property(`title`).string()}highlightView(i){i.name&&this.mark(i).property(`name`).modifier(`local`).declaration.readonly.interface()}mark(i){let a=a=>createSemanticTypeMethods((o,s)=>this.highlightToken({range:nonNullable$1(a??i.$cstNode,`AST node has no CST node`).range,type:o,modifier:s})),o=a=>createSemanticTypeMethods((o,s)=>this.highlightKeyword({node:i,keyword:a,type:o,modifier:s})),s=(a,o)=>createSemanticTypeMethods((s,c)=>this.highlightProperty({node:i,property:a,type:s,modifier:c,...o===void 0?{}:{index:o}}));return{node:i,cst:a,keyword:o,property:s}}};const isIndexableElement=isAnyOf$1(isElement,isExtendElement);var FqnIndex=class extends ADisposable{projects;langiumDocuments;documentCache;workspaceCache;logger=logger$16.getChild(`fqn-index`);constructor(i){super(),this.services=i,this.langiumDocuments=i.shared.workspace.LangiumDocuments,this.projects=i.shared.workspace.ProjectsManager,this.documentCache=new DefaultWeakMap(i=>this.createDocumentIndex(i)),this.workspaceCache=new WorkspaceCache(i.shared,DocumentState.IndexedContent),this.onDispose(i.shared.workspace.DocumentBuilder.onDocumentPhase(DocumentState.IndexedContent,i=>{isLikeC4LangiumDocument(i)&&isNotLikeC4Builtin(i)&&this.documentCache.delete(i)}))}documents(i){return this.langiumDocuments.projectDocuments(i).filter(i=>i.state>=DocumentState.IndexedContent)}get(i){return i.state<DocumentState.IndexedContent&&this.logger.warn(`document {doc} is in state {state}, expected at least IndexedContent ({expect}). This may lead to incorrect FQN resolution.`,{doc:UriUtils.basename(i.uri),state:i.state,expect:DocumentState.IndexedContent}),this.documentCache.get(i)}resolve(i){return i.$type===`Imported`?this.getFqn(i.imported.ref):i.$type===`Element`?this.getFqn(i):this.services.likec4.DeploymentsIndex.getFqn(i)}getFqn(i){invariant(isElement(i)||isDeploymentElement(i));let a=ElementOps.readId(i);if(e$4(a))return a;let o=getDocument$6(i);return o.state<DocumentState.IndexedContent&&this.logger.warn(`document {doc} is not yet indexed, creating on the fly to resolve FQN for element {el}`,{el:i.name??i.$type,doc:UriUtils.basename(o.uri)}),invariant(isLikeC4LangiumDocument(o)),this.get(o),nonNullable(ElementOps.readId(i),`Element fqn must be set, invalid state`)}byFqn(i,a){return stream(this.workspaceCache.get(`${i}:fqn:${a}`,()=>this.documents(i).flatMap(i=>this.get(i).byFqn(a)).toArray()))}rootElements(i){return stream(this.workspaceCache.get(`${i}:rootElements`,()=>{let a=new MultiMap;for(let o of this.documents(i))for(let i of this.get(o).rootElements())a.set(i.name,i);return uniqueByName(a)}))}directChildrenOf(i,a){return stream(this.workspaceCache.get(`${i}:directChildrenOf:${a}`,()=>{let o=new MultiMap;for(let s of this.documents(i))for(let i of this.get(s).children(a))o.set(i.name,i);return uniqueByName(o)}))}uniqueDescedants(i,a){return stream(this.workspaceCache.get(`${i}:uniqueDescedants:${a}`,()=>{let o=new MultiMap,s=new MultiMap;for(let c of this.documents(i)){let i=this.get(c);for(let s of i.children(a))o.set(s.name,s);for(let o of i.descendants(a))s.set(o.name,o)}let c=uniqueByName(o),l=[...s.associations()].flatMap(([i,a])=>a.length===1&&!o.has(i)?a:[]);return[...c,...sortNaturalByFqn(l)]}))}createDocumentIndex(i){let a=i.parseResult.value.models.flatMap(i=>i.elements.filter(isIndexableElement));if(a.length===0)return DocumentFqnIndex.EMPTY;let o=i.likec4ProjectId??this.projects.ownerProjectId(i),s=[],c=new MultiMap,l=new MultiMap,d=new MultiMap,f=this.services.workspace.AstNodeDescriptionProvider,h=(a,s,c)=>{let l=Object.assign(f.createDescription(a,s,i),{id:c,likec4ProjectId:o});return ElementOps.writeId(a,c),d.set(c,l),l};function g(i,a){let o=Fqn$1(i.name,a),d=h(i,i.name,o);a?c.set(a,d):s.push(d);let f=n$2(i.body?.elements??[],isIndexableElement);if(!t$4(f,1))return[d];let _=f.flatMap(i=>g(i,o));for(let i of _)l.set(o,i);return[d,..._]}function _(i){let a=readStrictFqn(i.element),o=t$3(i.body?.elements??[],n$2(isElement),t$7(i=>g(i,a)));if(o.length!==0)for(let i of[a,...ancestorsFqn$1(a)])for(let a of o)l.set(i,a)}for(let o of a)try{if(isExtendElement(o)){_(o);continue}g(o,null)}catch(a){this.logger.warn(`Error while traversing element {el} in document {doc}`,{el:o.$type,doc:UriUtils.basename(i.uri),error:a})}return new DocumentFqnIndex(s,c,l,d,o)}};function uniqueByName(i){return[...i.associations()].flatMap(([i,a])=>a.length===1?a:[]).sort((i,a)=>compareNatural(i.name,a.name))}var DocumentFqnIndex=class i{static EMPTY=new i([],new MultiMap,new MultiMap,new MultiMap,ProjectsManager.DefaultProjectId);constructor(i,a,o,s,c){this._rootElements=i,this._children=a,this._descendants=o,this._byfqn=s,this.projectId=c}rootElements(){return this._rootElements}byFqn(i){return this._byfqn.get(i)??[]}children(i){return this._children.get(i)??[]}descendants(i){return this._descendants.get(i)??[]}};const _isDeployment=isAnyOf(isDeploymentElement,isExtendDeployment);var DeploymentsIndex=class extends FqnIndex{Names;logger=logger$16.getChild(`deployments-index`);constructor(i){super(i),this.services=i,this.Names=i.references.NameProvider}createDocumentIndex(i){let a=i.parseResult.value.deployments.flatMap(i=>i.elements.filter(_isDeployment));if(a.length===0)return DocumentFqnIndex.EMPTY;let o=i.likec4ProjectId??this.projects.ownerProjectId(i),s=[],c=new MultiMap,l=new MultiMap,d=new MultiMap,f=this.Names,h=this.services.workspace.AstNodeDescriptionProvider,g=(a,s,c)=>{let l={...h.createDescription(a,s,i),id:c,likec4ProjectId:o};return ElementOps.writeId(a,c),d.set(c,l),l};function _(i,a){let o=f.getName(i);if(!e$4(o))return[];let d=Fqn(o,a),h=g(i,o,d);if(a?c.set(a,h):s.push(h),isDeployedInstance(i))return[h];let v=n$2(i.body?.elements??[],_isDeployment);if(!t$4(v,1))return[h];let y=v.flatMap(i=>_(i,d));for(let i of y)l.set(d,i);return[h,...y]}function v(i){let a=readStrictFqn(i.deploymentNode),o=t$3(i.body?.elements??[],n$2(_isDeployment),t$7(i=>_(i,a)));if(o.length!==0)for(let i of[a,...ancestorsFqn(a)])for(let a of o)l.set(i,a)}for(let o of a)try{if(isExtendDeployment(o)){v(o);continue}_(o,null)}catch(a){this.logger.warn(`Error while traversing element {el} in document {doc}`,{el:o.$type,doc:UriUtils.basename(i.uri),error:a})}return new DocumentFqnIndex(s,c,l,d,o)}},MergedSpecification=class{specs={elements:{},deployments:{},relationships:{},colors:{}};tags;globals={predicates:{},dynamicPredicates:{},styles:{}};imports=new MultiMap(Set);projectId;constructor(i){let a={},o=[];for(let s of i){let{c4Specification:i,c4Globals:c,c4Imports:d}=s,f=s.likec4ProjectId;e$1(f)&&(o.length===0||o[0]!==f)&&o.push(s.likec4ProjectId),Object.assign(a,i.tags),Object.assign(this.specs.elements,i.elements),Object.assign(this.specs.relationships,i.relationships),Object.assign(this.specs.colors,i.colors),Object.assign(this.specs.deployments,i.deployments),Object.assign(this.globals.predicates,c.predicates),Object.assign(this.globals.dynamicPredicates,c.dynamicPredicates),Object.assign(this.globals.styles,c.styles);for(let[i,a]of d)this.imports.set(i,a)}this.tags=assignTagColors(a),this.projectId=t$19(o)}toModelElement=({tags:i,links:a,style:o,id:s,kind:c,title:l,description:d,technology:f,summary:p,metadata:m})=>{try{let h=this.specs.elements[c];return h?(f??=h.technology,d??=h.description,p??=h.summary,a??=h.links,e$8(l)&&(l=h.title||nameFromFqn$1(s)),h.tags&&isNonEmptyArray$1(h.tags)&&(i=i?n$1([...h.tags,...i]):h.tags),exact$1({metadata:m&&!e$7(m)?m:void 0,notation:h.notation,style:exact$1({...h.style,...o}),links:a,tags:i,summary:p,technology:f,description:d,title:l,kind:c,id:s})):(logger$16.warn`No kind '${c}' found for ${s}`,null)}catch(i){logWarnError(i)}return null};toModelRelation=({astPath:i,source:a,target:o,kind:s,links:c,id:d,...f})=>e$1(s)&&this.specs.relationships[s]?{...this.specs.relationships[s],...f,...c&&{links:c},source:a,target:o,kind:s,id:d}:{...c&&{links:c},...f,source:a,target:o,id:d};toDeploymentElement=i=>{if(`element`in i&&!(`kind`in i))return{...i,element:FqnRef$1.flatten(i.element)};if(`element`in i)return logger$16.warn`Invalid ParsedAstDeployment ${i.id}, has both element and kind properties`,null;try{let a=this.specs.deployments[i.kind];if(!a)return logger$16.warn`No kind ${i.kind} found for ${i.id}`,null;let{id:o,style:s,title:c,...l}=i;return c=c===nameFromFqn$1(i.id)&&a.title?a.title:c,exact$1({...a,...l,title:c,style:exact$1({...a.style,...s}),id:o})}catch(i){logWarnError(i)}return null};toDeploymentRelation=({astPath:i,source:a,target:o,kind:s,links:c,id:d,...f})=>e$1(s)&&this.specs.relationships[s]?{...this.specs.relationships[s],...f,...c&&{links:c},source:a,target:o,kind:s,id:d}:{...c&&{links:c},...f,source:a,target:o,id:d}},LastSeenArtifacts=class{#e=new Map;#t=new Map;#n=new Map;constructor(i){i.shared.workspace.WorkspaceManager.onForceCleanCache(()=>{this.#e.clear(),this.#t.clear(),this.#n.clear()})}rememberSpecification(i){return i.projectId&&this.#e.set(i.projectId,i),i}rememberModel(i){let a=i.projectId,o=i.$styles,s=this.#t.get(a);return(!s||!s.equals(o))&&this.#t.set(a,o),this.#n.set(a,i),i}specification(i){return this.#e.get(i)}styles(i){return this.#t.get(i)}model(i){return this.#n.get(i)}};function assignNavigateTo(i){let a=new Map;for(let o of i)if(isElementView(o)&&o.viewOf&&e$5(o.extends)){let i=a.get(o.viewOf)??[];i.push(o.id),a.set(o.viewOf,i)}for(let{id:o,nodes:s}of i)for(let i of s){let s=i.modelRef;if(i.navigateTo||!s)continue;let c=r$1(a.get(s)??[],i=>i!==o);c&&(i.navigateTo=c)}return i}const{getDocument:getDocument$5}=ast_utils_exports;function unpack({nodes:i,edges:a,autoLayout:o,...s}){return{...s,autoLayout:isAutoLayoutDirection(o)?{direction:o}:o,nodes:t$20(i,({b:i,c:a,...o})=>({x:i[0],y:i[1],width:i[2],height:i[3],isCompound:a,...o})),edges:t$20(a,({p:i,cp:a,l:o,...s})=>({...!!a&&{controlPoints:a},...!!o&&{labelBBox:o},...s,points:i}))}}function hasManualLayout(i){return i.includes(`@likec4-generated`)}function deserializeFromComment(i){if(!hasManualLayout(i))throw Error(`Not a likec4-generated comment: ${i}`);return unpack(decode(fromBase64(i.trim().split(`
|
|
55
|
+
`).filter(i=>!i.includes(`**`)&&!i.includes(`@likec4-`)&&!i.includes(`*/`)).map(i=>i.replaceAll(`*`,``).trim()).join(``))))}function parseViewManualLayout(i){let a=findCommentNode(i.$cstNode,[`BLOCK_COMMENT`]);if(!(!a||!hasManualLayout(a.text)))try{return deserializeFromComment(a.text)}catch(o){let s=getDocument$5(i);logWarnError(o),logger$16.warn(`Ignoring manual layout of "${i.name??`unnamed`}" at ${s.uri.fsPath}:${1+(a.range.start.line||0)}`);return}}var MergedExtends=class{mergedData=new Map;mergeMetadata(i,a){let o={...i};for(let[i,s]of Object.entries(a)){let a=o[i];if(a===void 0){o[i]=s;continue}let c=Array.isArray(a)?a:[a],l=Array.isArray(s)?s:[s],d=n$1([...c,...l]);o[i]=d.length===1?d[0]:d}return o}merge(i){for(let a of i){let{id:i,links:o,tags:s,metadata:c}=a,l=this.mergedData.get(i)??{links:[],tags:[],metadata:{}};o&&l.links.push(...o),s&&(l.tags=n$1([...l.tags,...s])),c&&(l.metadata=this.mergeMetadata(l.metadata,c)),this.mergedData.set(i,l)}}applyExtended(i){let a=this.mergedData.get(i.id);if(!a)return i;let o=a.links;i.links&&i.links.length>0&&(o=[...i.links,...o]);let s=a.tags;i.tags&&i.tags.length>0&&(s=n$1([...i.tags,...s]));let c=a.metadata;return i.metadata&&(c=this.mergeMetadata(i.metadata,a.metadata)),{...i,tags:t$4(s,1)?s:null,links:t$4(o,1)?o:null,...!e$7(c)&&{metadata:c}}}};function buildModelData(i,a,c){let l=new MergedSpecification(c);l.projectId===a.id&&i.likec4.LastSeen.rememberSpecification(l);let f=t$20(l.specs.colors,i=>computeColorValues(i.color)),h=new Set,g=new MergedExtends,v=new MergedExtends,y=c.flatMap(i=>i.c4ExtendRelations),b=new Set,x=i=>{i?.metadata&&t$21(i.metadata).forEach(i=>h.add(i))},C=t$3(c,t$7(i=>(g.merge(i.c4ExtendElements),t(i.c4Elements,l.toModelElement))),n$2(e$4),sortParentsFirst,t$22((i,a)=>{let o=parentFqn(a.id);return o&&e$5(i[o])?(logger$16.debug`No parent found for ${a.id}`,i):(i[a.id]=g.applyExtended(a),x(i[a.id]),i)},{})),w=t$3(c,t$7(i=>t(i.c4Relations,l.toModelRelation)),n$2(i=>{if(!i)return!1;let a=FqnRef$1.flatten(i.source),o=FqnRef$1.flatten(i.target);return e$5(C[a])&&!isGlobalFqn(a)||e$5(C[o])&&!isGlobalFqn(o)?(logger$16.debug`Invalid relation ${i.id}
|
|
56
|
+
source: ${a} resolved: ${!!C[a]}
|
|
57
|
+
target: ${o} resolved: ${!!C[o]}\n`,!1):!0}),t(i=>{let a=stringHash$1(`extend-relation`,FqnRef$1.flatten(i.source),FqnRef$1.flatten(i.target),i.kind??`default`,i.title??``),o=y.filter(i=>i.id===a);if(o.length===0)return i;o.forEach(i=>b.add(i.astPath));let s=i.tags?[...i.tags]:[],c=i.links?[...i.links]:[],l=i.metadata?{...i.metadata}:{};for(let i of o){if(i.tags&&s.push(...i.tags),i.links)for(let a of i.links)c.some(i=>i.url===a.url&&(i.title||``)===(a.title||``))||c.push(a);if(i.metadata)for(let[a,o]of Object.entries(i.metadata)){let i=l[a];if(i===void 0)l[a]=o;else{let s=Array.isArray(i)?i:[i],c=Array.isArray(o)?o:[o],d=n$1([...s,...c]);l[a]=d.length===1?d[0]:d}}}let d=n$1(s),f=c;return{...i,...t$4(d,1)&&{tags:d},...t$4(f,1)&&{links:f},...!e$7(l)&&{metadata:l}}}),t$13(x),t$6(e(`id`))),T=t$3(c,t$7(i=>(v.merge(i.c4ExtendDeployments),t(i.c4Deployments,l.toDeploymentElement))),n$2(e$4),sortParentsFirst,t$22((i,a)=>{let o=parentFqn(a.id);return o&&e$5(i[o])?(logger$16.debug`No parent found for deployment element ${a.id}`,i):(i[a.id]=isDeploymentNode(a)?v.applyExtended(a):a,x(i[a.id]),i)},{})),E=t$3(c,t$7(i=>t(i.c4DeploymentRelations,l.toDeploymentRelation)),n$2(i=>i?e$5(T[i.source.deployment])||e$5(T[i.target.deployment])?(logger$16.debug`Invalid deployment relation ${i.id}
|
|
58
|
+
source: ${i.source.deployment} resolved: ${!!T[i.source.deployment]}
|
|
59
|
+
target: ${i.target.deployment} resolved: ${!!T[i.target.deployment]}\n`,!1):!0:!1),t$22((i,a)=>e$3(i[a.id])?(logger$16.debug`Duplicate deployment relation ${a.id}`,i):(x(a),i[a.id]=a,i),{}));function D(i){let o=i.uri.toString();return i=>{let{id:s,title:c,description:l,astPath:f,...p}=i;return i[_type$1]===`element`&&e$5(c)&&`viewOf`in i&&(c=C[i.viewOf]?.title??null),e$5(c)&&s===`index`&&(c=`Landscape view`),{...t$23(p,i=>i===void 0),[_stage$1]:`parsed`,sourcePath:UriUtils.relative(a.folderUri,o),docUri:o,description:l,title:c,id:s}}}let O=c.flatMap(i=>t(i.c4Views,D(i)));O.some(i=>i.id===`index`)||O.unshift({[_stage$1]:`parsed`,[_type$1]:`element`,id:`index`,title:`Landscape view`,description:null,rules:[{include:[{wildcard:!0}]}]});let k=t$3(O,t$6(e(`id`)));O.some(isExtendsElementView)&&(k=resolveRulesExtendedViews(k));for(let i of y)b.has(i.astPath)||logger$16.warn(`Relation extend at ${i.astPath} does not match any relation in the model`);return{data:{[_stage$1]:`parsed`,projectId:a.id,project:exact$1({id:a.id,title:a.config.title??a.config.name,styles:a.config.styles,manualLayouts:a.config.manualLayouts}),specification:{tags:l.tags,elements:l.specs.elements,relationships:t$20(l.specs.relationships,({notation:i,technology:a,...o})=>({...i&&{notation:i},...a&&{technology:a},style:o})),deployments:l.specs.deployments,...h.size>0&&{metadataKeys:[...h].sort(compareNatural)},customColors:f},elements:C,relations:w,globals:l.globals,views:k,deployments:{elements:T,relations:E},imports:{}},imports:l.imports}}const parsedWithoutImportsCacheKey=i=>`parsed-without-imports-${i}`,parsedModelCacheKey=i=>`parsed-model-${i}`,computedModelCacheKey=i=>`computed-model-${i}`,builderLogger=logger$16.getChild(`builder`);var DefaultLikeC4ModelBuilder=class extends ADisposable{projects;parser;listeners=[];cache;DocumentBuilder;manualLayouts;mutex;lastSeen;constructor(i){super(),this.services=i,this.projects=i.shared.workspace.ProjectsManager,this.parser=i.likec4.ModelParser,this.cache=i.shared.workspace.Cache,this.DocumentBuilder=i.shared.workspace.DocumentBuilder,this.mutex=i.shared.workspace.WorkspaceLock,this.manualLayouts=i.shared.workspace.ManualLayouts,this.lastSeen=i.likec4.LastSeen,this.onDispose(this.DocumentBuilder.onUpdate((i,a)=>{a.length>0&&this.notifyListeners(a)}),i.shared.workspace.WorkspaceManager.onForceCleanCache(()=>{this.clearCache()}));let a=t$24(e$2(),n$2(i=>isNotLikeC4Builtin(i)&&!this.projects.isExcluded(i)),t(i=>i.uri));this.onDispose(this.DocumentBuilder.onBuildPhase(DocumentState.Validated,(i,o)=>{let s=a(i);s.length>0&&this.notifyListeners(s)})),builderLogger.debug`created`}unsafeSyncParseModelData(i){let a=this.cache,o=parsedWithoutImportsCacheKey(i);return a.get(o,()=>{let a=builderLogger.getChild(i);try{let o=this.projects.getProject(i),s=this.documents(i);return s.length===0?(a.debug`unsafeSyncParseModelData: skipped due to no documents`,null):(a.debug`unsafeSyncParseModelData: completed`,buildModelData(this.services,o,s))}catch(a){return builderLogger.warn(`unsafeSyncParseModelData failed for project ${i}`,{err:a}),null}})}unsafeSyncJoinedModelData(i){let a=builderLogger.getChild(i),o=this.unsafeSyncParseModelData(i);if(!o)return null;if(o.imports.size===0)return o.data;a.debug`processing imports of ${i}`;let s=[...o.imports.associations()].reduce((i,[a,o])=>{if(o.size===0)return i;let s=this.unsafeSyncParseModelData(a);if(s){let c=[...o].flatMap(i=>s.data.elements[i]??[]);t$4(c,1)&&(i[a]=structuredClone(c))}return i},{});return{...o.data,imports:s}}async parseModel(i,a){i=this.projects.ensureProjectId(i);let o=builderLogger.getChild(i),s=this.cache,c=performanceMark();return await this.mutex.read(async()=>{a?.isCancellationRequested&&await interruptAndCheck(a);let l=parsedModelCacheKey(i);return s.has(l)&&o.debug`parseModel from cache`,s.get(l,()=>{let a=this.unsafeSyncJoinedModelData(i);return a?(o.debug`parseModel in ${c.pretty}`,LikeC4Model.create(a)):(o.debug`parseModel: returning EMPTY`,LikeC4Model.EMPTY.asParsed)})})}previousViews={};unsafeSyncComputeModel(i,a){let o=this.cache,s=computedModelCacheKey(i)+(a?.hash??``);return o.get(s,()=>{let o=builderLogger.getChild(i),s=this.unsafeSyncJoinedModelData(i);if(!s)return o.debug`unsafeSyncComputeModel: returning EMPTY`,LikeC4Model.EMPTY.asComputed;let c=LikeC4Model.create(s),l=[];for(let i of t$12(s.views)){let s=computeView(i,c);if(!s.isSuccess){o.warn(loggable(s.error));continue}a?.views[i.id]&&Object.assign(s.view,{hasManualLayout:!0}),l.push(s.view)}assignNavigateTo(l);let d=t$25(l,a=>{let o=computedViewKey(i,a.id),s=this.previousViews[o],c=s&&deepEqual(a,s)?s:a;return this.previousViews[o]=c,[a.id,c]}),f={...s,manualLayouts:{...a?.views},[_stage]:`computed`,views:d};return o.debug(`unsafeSyncComputeModel${a?` with manual layouts`:``}: completed`),this.lastSeen.rememberModel(LikeC4Model.create(f))})}async computeModel(i,a){i=this.projects.ensureProjectId(i);let o=builderLogger.getChild(i),s=performanceMark();return await this.mutex.read(async()=>{a?.isCancellationRequested&&await interruptAndCheck(a);let c=this.projects.getProject(i),l=await this.manualLayouts.read(c),d=this.unsafeSyncComputeModel(i,l);return d===LikeC4Model.EMPTY?o.debug(`computeModel returned EMPTY`):s.ms>10&&o.debug(`computeModel completed in ${s.pretty}`),d})}onModelParsed(i){return this.listeners.push(i),Disposable.create(()=>{let a=this.listeners.indexOf(i);a>=0&&this.listeners.splice(a,1)})}clearCache(){builderLogger.debug(`clearCache`),this.cache.clear(),this.previousViews={}}documents(i){return this.parser.documents(i).toArray()}notifyListeners(i){for(let a of this.listeners)try{a(i)}catch(i){builderLogger.warn(loggable(i))}}};function computedViewKey(i,a){return`computed-view-${i}-${a}`}const{findNodeForKeyword:findNodeForKeyword$2,findNodeForProperty}=grammar_utils_exports,{getDocument:getDocument$4,streamAllContents}=ast_utils_exports,logger$5=logger$16.getChild(`locator`);var LikeC4ModelLocator=class{fqnIndex;deploymentsIndex;langiumDocuments;parser;projects;constructor(i){this.services=i,this.fqnIndex=i.likec4.FqnIndex,this.deploymentsIndex=i.likec4.DeploymentsIndex,this.langiumDocuments=i.shared.workspace.LangiumDocuments,this.parser=i.likec4.ModelParser,this.projects=i.shared.workspace.ProjectsManager}documents(i){return this.parser.documents(i)}getParsedElement(...i){try{let a,o;if(i.length===2?(a=i[0],o=i[1]):(a=i[0],o=e$9(a)?this.projects.ensureProjectId():projectIdFrom(a)),e$9(a)){let i=a,s=this.fqnIndex.byFqn(o,i).head();if(!s)return null;let c=this.langiumDocuments.getDocument(s.documentUri),l=this.findParsedElementByFqnIn(i,c);return l&&c?{projectId:o,element:l,document:c}:null}let s=this.fqnIndex.getFqn(a),l=getDocument$4(a),d=this.findParsedElementByFqnIn(s,l);return d&&l?{projectId:o,element:d,document:l}:null}catch(i){return logger$5.debug(loggable(i)),null}}findParsedElementByFqnIn(i,a){if(a)return this.parser.parse(a).c4Elements.find(a=>a.id===i)}locateElement(i,a){let[o,s]=splitGlobalFqn(i);o??=this.projects.ensureProjectId(a);let c=this.fqnIndex.byFqn(o,s).head(),l=c?.nameSegment??c?.selectionSegment;return!c||!l?null:{uri:c.documentUri.toString(),range:l.range}}locateDeploymentElement(i,a){let o=this.projects.ensureProjectId(a),s=i,c=this.deploymentsIndex.byFqn(o,s).head(),l=c?.nameSegment??c?.selectionSegment;return!c||!l?null:{uri:c.documentUri.toString(),range:l.range}}locateRelation(i,a){let o=this.projects.ensureProjectId(a);for(let a of this.documents(o)){let o=a.c4Relations.find(a=>a.id===i)??a.c4DeploymentRelations.find(a=>a.id===i);if(!o)continue;let s=this.services.workspace.AstNodeLocator.getAstNode(a.parseResult.value,o.astPath);if(!isRelation(s)&&!isDeploymentRelation(s))continue;let c=s.kind?findNodeForProperty(s.$cstNode,`kind`):void 0;if(c??=s.dotKind?findNodeForProperty(s.$cstNode,`dotKind`):void 0,c??=findNodeForKeyword$2(s.$cstNode,`->`),c??=findNodeForProperty(s.$cstNode,`title`),c??=findNodeForProperty(s.$cstNode,`target`),c??=s.$cstNode,c)return{uri:a.uri.toString(),range:{start:c.range.start,end:c.range.start}}}return null}locateViewAst(i,a){let o=this.projects.ensureProjectId(a);for(let a of this.documents(o)){let o=a.c4Views.find(a=>a.id===i);if(!o)continue;let s=this.services.workspace.AstNodeLocator.getAstNode(a.parseResult.value,o.astPath);if(isLikeC4View(s))return{doc:a,view:o,viewAst:s}}return null}locateView(i,a){let o=this.locateViewAst(i,a);if(!o)return null;let s=o.viewAst,c=s.name?findNodeForProperty(s.$cstNode,`name`):void 0;return c??=findNodeForKeyword$2(s.$cstNode,`view`),c??=s.$cstNode,c?{uri:o.doc.uri.toString(),range:{start:c.range.start,end:c.range.start}}:null}async locateDocumentTags(i,a){let o=this.langiumDocuments.getDocument(i);if(!o||!o.likec4ProjectId)return null;o.state<DocumentState.Linked&&(logger$5.debug(`Waiting for document ${o.uri.path} to be Linked`),await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Linked,o.uri,a));let s=projectIdFrom(o);logger$5.trace`locate document tags for ${o.uri.fsPath} in project ${s}`;try{let i=this.services.likec4.LastSeen.specification(s)?.tags,a=this.services.likec4.LastSeen.styles(s)??LikeC4Styles$1.DEFAULT;if(!i)return logger$5.trace(`No specification or styles found for project ${s}, cannot locate tags for document ${o.uri.fsPath}`),null;let c=t$3(streamAllContents(o.parseResult.value),ifilter(i=>isTag(i)||isTagRef(i)),toArray(),t$7(o=>{let s,c;try{isTag(o)?(s=o.name,c=o.$cstNode):(s=o.tag.$refText,c=o.tag.$refNode);let l=i[s];return invariant$1(l,`Tag ${s} not found in merged specification`),invariant$1(c,`Tag ${s} does not have a $cstNode`),{name:s,color:a.tagColor(l.color).fill,range:c.range,isSpecification:isTag(o)}}catch(i){return logger$5.warn(`Fail on tag ${s}`,{err:i}),[]}}));return logger$5.debug(`Found ${c.length} tags in document ${o.uri.path}`),c}catch(i){return logger$5.warn(loggable(i)),null}}locateDynamicViewStep(i){let{doc:a,viewAst:o}=this.locateViewAst(i.view,i.projectId)??{};if(!a||!o)return null;if(!isDynamicView$1(o)||!o.body)return logger$5.warn(`View ${i.view} is not a dynamic view`),null;let s=this.services.workspace.AstNodeLocator.getAstNodePath(o.body)+i.astPath,c=this.services.workspace.AstNodeLocator.getAstNode(a.parseResult.value,s);if(!c||!isDynamicViewStep(c))return logger$5.warn(`Failed to locate dynamic view step ${s} in view ${i.view}`),null;let l=c.kind?findNodeForProperty(c.$cstNode,`kind`):void 0;return l??=c.dotKind?findNodeForProperty(c.$cstNode,`dotKind`):void 0,l??=findNodeForKeyword$2(c.$cstNode,`->`),l??=findNodeForKeyword$2(c.$cstNode,`<-`),l??=findNodeForProperty(c.$cstNode,`title`),l??=findNodeForProperty(c.$cstNode,`target`),l??=c.$cstNode,l?{uri:a.uri.toString(),range:{start:l.range.start,end:l.range.start}}:null}};const RESERVED_WORDS=[`this`,`it`,`self`,`super`,`likec4lib`,`global`];function tryOrLog(i){return async function a(o,s,c){try{let a=i(o,s,c);e$10(a)&&await a;return}catch(i){let a=i instanceof Error?i.message:String(i);s(`error`,`Validation failed: ${a}`,{node:o}),logger$16.debug(`Validation failed: ${a}`,{error:i})}}}const{getDocument:getDocument$3}=ast_utils_exports,deploymentNodeChecks=i=>{let a=i.likec4.DeploymentsIndex,o=i.references.NameProvider;return tryOrLog((i,s)=>{let c=o.getName(i);if(!c){s(`error`,`DeploymentNode must be named`,{node:i});return}let l=nonNullable(o.getNameNode(i),`name CstNode not found`).range;RESERVED_WORDS.includes(c)&&s(`error`,`Reserved word: ${c}`,{node:i,range:l});let d=projectIdFrom(i),f=a.getFqn(i);a.byFqn(d,f).limit(2).toArray().length>1&&s(`error`,`Duplicate node name "${f}"`,{node:i,range:l})})},deployedInstanceChecks=i=>{let a=i.likec4.DeploymentsIndex,o=i.references.NameProvider;return tryOrLog((i,s)=>{let c=o.getName(i);if(!c){s(`error`,`Deployed instance must be named, unique inside node`,{node:i});return}let l=nonNullable(o.getNameNode(i),`name CstNode not found`).range;RESERVED_WORDS.includes(c)&&s(`error`,`Reserved word: ${c}`,{node:i,range:l});let d=projectIdFrom(i),f=a.getFqn(i);a.byFqn(d,f).limit(2).toArray().length>1&&s(`error`,`Duplicate instance name "${f}"`,{node:i,range:l})})},deploymentRelationChecks=i=>{let a=i.likec4.ModelParser;return tryOrLog((i,o)=>{if(!i.target?.value?.ref){o(`error`,`DeploymentRelation target '${i.target?.$cstNode?.text??``}' not resolved`,{node:i,property:`target`});return}let s=getDocument$3(i),c=a.forDocument(s),l;try{l=c._resolveDeploymentRelationSource(i)}catch(a){logger$16.warn(loggable(a)),o(`error`,`DeploymentRelation source not resolved`,{node:i,property:`source`});return}if(FqnRef.isImportRef(l)){o(`error`,`DeploymentRelation cannot refer imported model (not implemented yet)`,{node:i,property:`source`});return}if(FqnRef.isModelRef(l)){o(`error`,`DeploymentRelation must refer deployment element`,{node:i,property:`source`});return}let d=c.parseFqnRef(i.target);if(FqnRef.isImportRef(d)){o(`error`,`DeploymentRelation cannot refer imported model (not implemented yet)`,{node:i,property:`target`});return}if(FqnRef.isModelRef(d)){o(`error`,`DeploymentRelation must refer deployment element`,{node:i,property:`target`});return}isSameHierarchy(l.deployment,d.deployment)&&o(`error`,`Invalid parent-child relationship`,{node:i})})},extendDeploymentChecks=i=>tryOrLog((i,a)=>{let o=i.deploymentNode.value.ref;(!o||!isDeploymentNode$1(o))&&a(`error`,`ExtendDeployment allows only DeploymentNode`,{node:i,property:`deploymentNode`})}),dynamicViewStepSingle=i=>{let a=i.likec4.FqnIndex;return tryOrLog((i,o)=>{let s=elementRef(i.source),c=s&&a.getFqn(s);c||o(`error`,`Source not found (not parsed/indexed yet)`,{node:i,property:`source`});let l=elementRef(i.target),d=l&&a.getFqn(l);d||o(`error`,`Target not found (not parsed/indexed yet)`,{node:i,property:`target`}),c&&d&&(isAncestor(c,d)||isAncestor(d,c))&&o(`error`,`Invalid parent-child relationship`,{node:i})})},dynamicViewStepChain=i=>{let a=i.likec4.FqnIndex;return tryOrLog((i,o)=>{let s=i.source;isDynamicStepSingle(s)&&s.isBackward&&o(`error`,`Invalid chain after backward step`,{node:i});let c=elementRef(i.target);c&&a.getFqn(c)||o(`error`,`Target not found (not parsed/indexed yet)`,{node:i,property:`target`})})},dynamicViewDisplayVariant=i=>tryOrLog((i,a)=>{if(e$7(i.value)||i.value!==`diagram`&&i.value!==`sequence`){a(`error`,`Invalid display variant: "diagram" or "sequence" are allowed`,{node:i,property:`value`});return}hasContainerOfType(i,isDynamicViewBody)||a(`error`,`Display mode can be defined only inside dynamic view`,{node:i})}),{getDocument:getDocument$2}=ast_utils_exports,checkElement=i=>{let a=i.likec4.FqnIndex,o=i.workspace.AstNodeLocator;return tryOrLog((i,s)=>{let c=a.getFqn(i);if(!c){s(`error`,`Not indexed element`,{node:i,property:`name`});return}RESERVED_WORDS.includes(i.name)&&s(`error`,`Reserved word: ${i.name}`,{node:i,property:`name`});let l=getDocument$2(i),d=l.uri,f=o.getAstNodePath(i),p=a.byFqn(projectIdFrom(l),c).filter(i=>i.documentUri!==d||i.path!==f).head();if(p){let a=p.documentUri!==d;s(`error`,`Duplicate element name ${i.name===c?i.name:i.name+` (`+c+`)`}`,{node:i,property:`name`,...a&&{relatedInformation:[{location:{range:p.nameSegment?.range??p.selectionSegment?.range,uri:p.documentUri.toString()},message:`conflicting element`}]}})}})},checkElementRef=i=>tryOrLog((i,a)=>{isReferenceToDeploymentModel(i.modelElement)&&a(`error`,`Only model elements allowed here`,{node:i,property:`modelElement`})}),{getDocument:getDocument$1}=ast_utils_exports,checkImportsFromPoject=i=>{let a=i.shared.workspace.ProjectsManager;return tryOrLog((i,o)=>{if(!a.all.includes(i.project)){o(`error`,`Imported project not found`,{node:i,property:`project`});return}let s=projectIdFrom(getDocument$1(i));if(i.project===s){o(`error`,`Imported project cannot be the same as the current project`,{node:i,property:`project`});return}})},opacityPropertyRuleChecks=i=>tryOrLog((i,a)=>{let o=parseFloat(i.value);(isNaN(o)||o<0||o>100)&&a(`warning`,`Value ignored, must be between 0% and 100%`,{node:i,property:`value`})}),iconPropertyRuleChecks=i=>(i,a)=>{let o=i.$container;o.props.some(a=>isIconProperty(a)&&a!==i)&&a(`error`,`Icon must be defined once`,{node:i}),isElementStyleProperty(o)&&isElementBody(o.$container)&&o.$container.props.some(i=>isIconProperty(i))&&a(`warning`,`Redundant as icon defined on element`,{node:i}),i.value?.startsWith(`file://`)&&a(`error`,`Icon URI must not start with file://`,{node:i,property:`value`})},colorLiteralRuleChecks=i=>(i,a)=>{if(i.$type===`HexColor`){if(i.hex===void 0||e$9(i.hex)&&!i.hex.match(/^[a-fA-F0-9]+$/)){a(`error`,`Invalid HEX`,{node:i,property:`hex`});return}let o=e$6(i.hex)?i.hex.toString().length:i.hex.length;o!==6&&o!==3&&o!==8&&a(`error`,`Invalid value "${i.$cstNode?.text}", must be 3, 6 or 8 characters long`,{node:i,property:`hex`});return}if(i.$type===`RGBAColor`){if((!e$6(i.red)||i.red<0||i.red>255)&&a(`error`,`Invalid value, must be between 0 and 255`,{node:i,property:`red`}),(!e$6(i.green)||i.green<0||i.green>255)&&a(`error`,`Invalid value, must be between 0 and 255`,{node:i,property:`green`}),(!e$6(i.blue)||i.blue<0||i.blue>255)&&a(`error`,`Invalid value, must be between 0 and 255`,{node:i,property:`blue`}),e$6(i.alpha)&&(i.alpha<0||i.alpha>1)&&a(`error`,`Invalid value, must be between 0 and 1`,{node:i,property:`alpha`}),e$9(i.alpha)){let o=parseFloat(i.alpha);(o<0||o>100)&&a(`error`,`Invalid value, must be between 0% and 100%`,{node:i,property:`alpha`})}return}nonexhaustive(i)},relationChecks=i=>{let a=i.likec4.ModelParser;return tryOrLog((i,o)=>{let s=a.forDocument(getDocument$6(i)),c=safeCall(()=>s._resolveRelationSource(i));if(!c){o(`error`,`Source not resolved`,{node:i,property:`source`});return}let l=safeCall(()=>s.parseFqnRef(i.target));if(!l){o(`error`,`Target not resolved`,{node:i,property:`target`});return}FqnRef.isImportRef(c)&&(FqnRef.isImportRef(l)?o(`warning`,`Relationship between imported elements may not be visible in origin projects`,{node:i}):o(`warning`,`Relationship from imported element to local element may not be visible in origin project`,{node:i,property:`source`})),isSameHierarchy(FqnRef.flatten(c),FqnRef.flatten(l))&&o(`error`,`Invalid parent-child relationship`,{node:i})})},checkRelationBody=i=>tryOrLog((i,a)=>{i.$container.tags?.values&&i.tags?.values&&a(`error`,`Relation cannot have tags in both header and body`,{node:i.tags})}),extendRelationChecks=i=>{let a=i.likec4.ModelParser,o=new WorkspaceCache(i.shared,DocumentState.Linked),s=({source:i,target:a,kind:o,title:s})=>stringHash$1(`extend-relation`,FqnRef.flatten(i),FqnRef.flatten(a),o??`default`,s??``);function c(a){return o.get(a,()=>new Set(t$3(i.shared.workspace.LangiumDocuments.projectDocuments(a).toArray(),t$7(i=>i.c4Relations??[]),t(i=>s(i)))))}return tryOrLog((i,o)=>{let l=getDocument$6(i),d=a.forDocument(l),f=safeCall(()=>d.parseFqnRef(i.source));if(!f){o(`error`,`Source not resolved`,{node:i,property:`source`});return}let p=safeCall(()=>d.parseFqnRef(i.target));if(!p){o(`error`,`Target not resolved`,{node:i,property:`target`});return}if(!FqnRef.isModelRef(f)&&!FqnRef.isImportRef(f)){o(`error`,`Source must reference a model element`,{node:i,property:`source`});return}if(!FqnRef.isModelRef(p)&&!FqnRef.isImportRef(p)){o(`error`,`Target must reference a model element`,{node:i,property:`target`});return}let m=projectIdFrom(l),h=(i.kind??i.dotKind?.kind)?.ref?.name??`default`,{title:g=``}=d.parseBaseProps({},{title:i.title}),_=s({source:f,target:p,kind:h,title:g});c(m).has(_)||o(`warning`,`This extend does not match any relation (by source, kind, target, title)`,{node:i})})},checkSpecificationRule=i=>tryOrLog((i,a)=>{i.$containerIndex&&i.$containerIndex>0&&a(`warning`,`Prefer one specification per document`,{node:i,property:`name`})}),checkModel=i=>tryOrLog((i,a)=>{i.$containerIndex&&i.$containerIndex>0&&a(`warning`,`Prefer one model per document`,{node:i,property:`name`})}),checkGlobals=i=>tryOrLog((i,a)=>{i.$containerIndex&&i.$containerIndex>0&&a(`warning`,`Prefer one global block per document`,{node:i,property:`name`})}),checkElementKind=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{RESERVED_WORDS.includes(i.name)&&o(`error`,`Reserved word: ${i.name}`,{node:i,property:`name`});let s=projectIdFrom(i),c=a.projectElements(s,ElementKind).filter(a=>a.name===i.name&&a.node!==i).head();if(c){let a=c.documentUri!==getDocument$6(i).uri;o(`error`,`Duplicate element kind '${i.name}'`,{node:i,property:`name`,...a&&{relatedInformation:[{location:{range:c.nameSegment.range,uri:c.documentUri.toString()},message:`conflicting definition`}]}})}})},checkDeploymentNodeKind=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{RESERVED_WORDS.includes(i.name)&&o(`error`,`Reserved word: ${i.name}`,{node:i,property:`name`});let s=projectIdFrom(i),c=a.projectElements(s,DeploymentNodeKind).filter(a=>a.name===i.name&&a.node!==i).head();if(c){let a=c.documentUri!==getDocument$6(i).uri;o(`error`,`Duplicate deploymentNode kind '${i.name}'`,{node:i,property:`name`,...a&&{relatedInformation:[{location:{range:c.nameSegment.range,uri:c.documentUri.toString()},message:`conflicting definition`}]}})}})},checkTag=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{let s=i.name,c=projectIdFrom(i),l=a.projectElements(c,`Tag`).filter(a=>a.name===s&&a.node!==i).head();if(l){let a=l.documentUri!==getDocument$6(i).uri;o(`error`,`Duplicate tag '${i.name}'`,{node:i,property:`name`,...a&&{relatedInformation:[{location:{range:l.nameSegment.range,uri:l.documentUri.toString()},message:`conflicting definition`}]}})}})},checkRelationshipKind=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{RESERVED_WORDS.includes(i.name)&&o(`error`,`Reserved word: ${i.name}`,{node:i,property:`name`});let s=projectIdFrom(i);a.projectElements(s,RelationshipKind).filter(a=>a.name===i.name).limit(2).count()>1&&o(`error`,`Duplicate RelationshipKind '${i.name}'`,{node:i,property:`name`})})},checkGlobalPredicate=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{let s=projectIdFrom(i),c=a.projectElements(s,GlobalPredicateGroup),l=a.projectElements(s,GlobalDynamicPredicateGroup);c.concat(l).filter(a=>a.name===i.name).limit(2).count()>1&&o(`error`,`Duplicate GlobalPredicateGroup or GlobalDynamicPredicateGroup name '${i.name}'`,{node:i,property:`name`})})},checkGlobalStyleId=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{let s=projectIdFrom(i);a.projectElements(s,GlobalStyleId).filter(a=>a.name===i.name).limit(2).count()>1&&o(`error`,`Duplicate GlobalStyleId name '${i.name}'`,{node:i,property:`name`})})},viewChecks=i=>{let a=i.shared.workspace.IndexManager;return tryOrLog((i,o)=>{let s=findCommentNode(i.$cstNode,[`BLOCK_COMMENT`]);if(s&&hasManualLayout(s.text)&&o(`warning`,`Migrate to the new manual layout snapshots (run LikeC4: Migrate manual layouts)`,{node:i,range:s.range,code:`manual-layout-v1`}),!i.name)return;RESERVED_WORDS.includes(i.name)&&o(`error`,`Reserved word: ${i.name}`,{node:i,property:`name`});let c=projectIdFrom(i);a.projectElements(c,LikeC4View).filter(a=>a.name===i.name).limit(2).count()>1&&o(`error`,`Duplicate view '${i.name}'`,{node:i,property:`name`})})};function collectFqnExprs(i){let a=[],o=i;for(;o;)o.value&&a.push(o.value),o=o.prev;return a.reverse()}const viewRuleRankChecks=i=>tryOrLog((i,a)=>{let o=collectFqnExprs(i.targets);o.length<2&&i.value===`same`&&a(`warning`,`Rank rule should have at least 2 targets`,{node:i,property:`targets`});let s=o.filter(isFqnRefExpr),c=s[0]?.ref?.parent;for(let o=1;o<s.length;o++){let l=s[o];i.value===`same`&&!areSame(c,l?.ref?.parent)&&a(`error`,`All targets must have the same parent rank same`,{node:i,property:`targets`})}});function areSame(i,a){return!i&&!a?!0:!i||!a||i.value.ref!==a.value.ref?!1:areSame(i.parent,a.parent)}const checkFqnExprWith=i=>{let a=i.likec4.ModelParser;return tryOrLog((i,o)=>{let s=getViewRulePredicateContainer(i);if(s?.$type!==`DynamicViewIncludePredicate`&&s?.isInclude!==!0){o(`error`,`Invalid usage inside "exclude"`,{node:i});return}let c=s.$type===`DynamicViewIncludePredicate`,l=a.forDocument(getDocument$6(s)),d=FqnExpr$1.unwrap(l.parseFqnExprWith(i).custom.expr);switch(!0){case FqnExpr$1.isWildcard(d)&&c:case FqnExpr$1.isElementKindExpr(d)&&c:case FqnExpr$1.isElementTagExpr(d)&&c:o(`warning`,`Predicate is ignored, as not supported in dynamic views`,{node:i});return;case FqnExpr$1.isWildcard(d):case FqnExpr$1.isModelRef(d):case FqnExpr$1.isDeploymentRef(d):return;case FqnExpr$1.isElementKindExpr(d):case FqnExpr$1.isElementTagExpr(d):o(`error`,`Invalid target (expect reference to specific element)`,{node:i,property:`subject`});return;default:nonexhaustive$1(d)}})},checkFqnRefExpr=i=>{let a=i.likec4.ModelParser;return tryOrLog((i,o)=>{let s=a.forDocument(getDocument$6(i)).parseFqnRefExpr(i),c=getViewRulePredicateContainer(i),l=isFqnRefInsideDeployment(i)&&!hasContainerOfType(i,i=>isDeploymentViewRuleStyle(i)||isViewRuleStyle(i));if(c?.$type===`DeploymentViewRulePredicate`||l){if(!hasContainerOfType(i,isRelationExpr)){if(FqnExpr$1.isModelRef(s)){o(`error`,`Deployment view predicate must reference deployment model`,{node:i});return}if(FqnExpr$1.isDeploymentRef(s)&&FqnRef$1.isInsideInstanceRef(s.ref)){o(`error`,`Must reference deployment nodes or instances, but not internals`,{node:i});return}}e$4(i.selector)&&!isDeploymentNode$1(i.ref.value?.ref)&&o(`warning`,`Selector '${i.selector}' applies to deployment nodes only, ignored here`,{node:i,property:`selector`});return}if(c?.$type===`DynamicViewIncludePredicate`)switch(!0){case FqnExpr$1.isElementKindExpr(s):case FqnExpr$1.isElementTagExpr(s):case FqnExpr$1.isWildcard(s):o(`warning`,`Predicate is ignored, as not supported in dynamic views`,{node:i});return}})},checkIncomingRelationExpr=i=>tryOrLog((i,a)=>{i.to.$type===`WildcardExpression`&&!isInOutRelationExpr(i.$container)&&e$5(getContainerOfType(i,isElementView$1)?.viewOf)&&a(`warning`,`Predicate is ignored as it concerns all relationships`,{node:i})}),checkOutgoingRelationExpr=i=>tryOrLog((i,a)=>{if(getViewRulePredicateContainer(i)?.$type===`ViewRulePredicate`&&i.$container.$type!==`DirectedRelationExpr`&&i.from.$type===`WildcardExpression`){let o=getContainerOfType(i,isElementView$1);o&&e$5(o.viewOf)&&a(`warning`,`Predicate is ignored as it concerns all relationships`,{node:i})}}),checkRelationExpr=i=>{let a=i.likec4.ModelParser;return tryOrLog((i,o)=>{let s=getContainerOfType(i,isDeploymentViewRulePredicate);if(!s||s.isInclude!==!0)return;let c=getDocument$6(i),l=a.forDocument(c),d=RelationExpr.unwrap(l.parseRelationExpr(i)),f=`Model reference is allowed in exclude predicate only`;if(RelationExpr.isDirect(d)){(FqnExpr.isModelRef(d.source)||FqnExpr.isModelRef(d.target))&&o(`error`,f,{node:i});return}let p;if(p=RelationExpr.isIncoming(d)?d.incoming:RelationExpr.isOutgoing(d)?d.outgoing:d.inout,FqnExpr.isModelRef(p)){o(`error`,f,{node:i});return}})},checkRelationExprWith=i=>tryOrLog((i,a)=>{let o=getViewRulePredicateContainer(i);if(!(!o||o.$type==`DynamicViewIncludePredicate`)&&!o.isInclude){a(`error`,`Invalid usage inside "exclude"`,{node:i});return}});var LikeC4DocumentValidator=class extends DefaultDocumentValidator{constructor(i){super(i),this.services=i}async validateDocument(i,a,o){return this.services.shared.workspace.ProjectsManager.isExcluded(i)?[]:await super.validateDocument(i,a,o)}};init_main();const isValidatableAstNode=isAnyOf$1(isImportsFromPoject,isImported,isGlobals,isGlobalPredicateGroup,isGlobalDynamicPredicateGroup,isGlobalStyle,isGlobalStyleGroup,isFqnExprWith,isRelationExprWith,isFqnExpr,isRelationExpr,isDynamicViewParallelSteps,isDynamicStepChain,isDynamicStepSingle,isDeploymentViewRule,isDeploymentViewRulePredicate,isExpressionV2,isRelationExpr,isFqnRefExpr,isViewProperty,isStyleProperty,isTags,isViewRule,isDynamicViewRule,isLikeC4View,isViewRuleStyleOrGlobalRef,isDeployedInstance,isDeploymentNode$1,isDeploymentRelation,isRelationshipStyleProperty,isDynamicViewDisplayVariantProperty,isMetadataBody,isMetadataProperty,isRelation,isRelationBody,isElementProperty,isStringProperty,isNavigateToProperty,isElement,isElementBody,isElementStyleProperty,isElementRef,isExtendElement,isExtendElementBody,isExtendDeployment,isExtendDeploymentBody,isExtendRelation,isExtendRelationBody,isSpecificationElementKind,isSpecificationRelationshipKind,isSpecificationDeploymentNodeKind,isSpecificationTag,isSpecificationColor,isSpecificationRule,isExpressions,isColorLiteral),findInvalidContainer=i=>{let a=i;for(;a&&!isLikeC4Grammar(a);){if(isValidatableAstNode(a))return a;a=a.$container}};function checksFromDiagnostics(i){let a=i.state>=DocumentState.Validated?i.diagnostics?.filter(i=>i.severity===DiagnosticSeverity$1.Error)??[]:[],o=new WeakSet;for(let{node:i}of a){if(e$5(i)||o.has(i))continue;o.add(i);let a=findInvalidContainer(i);a&&o.add(a)}let s=i=>!o.has(i);return{isValid:s,invalidNodes:o}}function registerValidationChecks(i){logger$16.debug(`registerValidationChecks`),i.validation.ValidationRegistry.register({DeployedInstance:deployedInstanceChecks(i),DeploymentNodeKind:checkDeploymentNodeKind(i),DeploymentNode:deploymentNodeChecks(i),DeploymentRelation:deploymentRelationChecks(i),ExtendDeployment:extendDeploymentChecks(i),ExtendRelation:extendRelationChecks(i),FqnRefExpr:checkFqnRefExpr(i),RelationExpr:checkRelationExpr(i),OpacityProperty:opacityPropertyRuleChecks(i),IconProperty:iconPropertyRuleChecks(i),SpecificationRule:checkSpecificationRule(i),Model:checkModel(i),Globals:checkGlobals(i),GlobalPredicateGroup:checkGlobalPredicate(i),GlobalDynamicPredicateGroup:checkGlobalPredicate(i),GlobalStyleId:checkGlobalStyleId(i),DynamicStepSingle:dynamicViewStepSingle(i),DynamicStepChain:dynamicViewStepChain(i),LikeC4View:viewChecks(i),Element:checkElement(i),ElementRef:checkElementRef(i),ElementKind:checkElementKind(i),Relation:relationChecks(i),RelationBody:checkRelationBody(i),Tag:checkTag(i),FqnExprWith:checkFqnExprWith(i),RelationExprWith:checkRelationExprWith(i),RelationshipKind:checkRelationshipKind(i),IncomingRelationExpr:checkIncomingRelationExpr(i),OutgoingRelationExpr:checkOutgoingRelationExpr(i),ImportsFromPoject:checkImportsFromPoject(i),ColorLiteral:colorLiteralRuleChecks(i),DynamicViewDisplayVariantProperty:dynamicViewDisplayVariant(i),ViewRuleRank:viewRuleRankChecks(i)});let a=i.shared.lsp.Connection;a&&onNextTick(()=>{i.shared.workspace.DocumentBuilder.onUpdate((i,o)=>{for(let i of o)logger$16.debug(`clear diagnostics for deleted ${i.path}`),a.sendDiagnostics({uri:i.toString(),diagnostics:[]}).catch(i=>logger$16.error(loggable(i)))})})}const logger$4=logger$16.getChild(`parser`);function toSingleLine(i){if(i==null)return;let a=removeIndent(i);return e$9(a)?a.split(`
|
|
60
|
+
`).join(` `):`md`in a?{md:a.md.split(`
|
|
61
|
+
`).join(` `)}:{txt:a.txt.split(`
|
|
62
|
+
`).join(` `)}}function removeIndent(i){if(i!=null)switch(!0){case e$9(i):return dedent(i).trim();case isMarkdownOrString(i)&&e$9(i.markdown):return{md:dedent(i.markdown).trim()};case isMarkdownOrString(i)&&e$9(i.text):return{txt:dedent(i.text).trim()};case isMarkdownOrString(i):return{txt:``};default:return}}var BaseParser=class{isValid;constructor(i,a,o){this.services=i,this.doc=a,this.project=o,this.isValid=checksFromDiagnostics(a).isValid}logError(i,a,o){let s=i instanceof Error?i.message:typeof i==`string`?i:String(i);if(isAstNode(a)){let i=this.services.references.NameProvider.getName(a);i=i?`"${i}" (${a.$type})`:`${a.$type}`;let o=a.$cstNode,c=o?`:${o.range.start.line+1}:${o.range.start.character+1}`:``;s+=`\n\tat ${i} (${this.doc.uri.fsPath}${c})`}else a&&`$refText`in a&&(s+=`\n\tat reference "${a.$refText}" (${this.doc.uri.fsPath})`);o&&o!==`base`?logger$4.getChild(o).debug(s):logger$4.debug(s)}tryParse(i,a,o){try{return!a||!this.isValid(a)?void 0:o(a)}catch(o){this.logError(o,a,i);return}}tryMap(i,a,o){return t$7(a,a=>this.tryParse(i,a,o)??[])}resolveFqn(i){if(isImported(i)){let a=projectIdFrom(i),o=this.resolveFqn(nonNullable(i.imported.ref,`FqnRef is empty of imported: ${i.$cstNode?.text}`));return this.doc.c4Imports.set(a,o),GlobalFqn(a,o)}return isExtendElement(i)?readStrictFqn(i.element):isExtendDeployment(i)?readStrictFqn(i.deploymentNode):isDeploymentElement(i)?this.services.likec4.DeploymentsIndex.getFqn(i):this.services.likec4.FqnIndex.getFqn(i)}getAstNodePath(i){return this.services.workspace.AstNodeLocator.getAstNodePath(i)}getMetadata(i){if(!i||!this.isValid(i)||e$7(i.props))return;let a=i=>{if(isMarkdownOrString(i)){let a=removeIndent(i);if(!a)return[];if(typeof a==`string`)return e$4(a)?[a]:[];{let i=a.md||a.txt;return e$4(i)?[i]:[]}}else if(isMetadataArray(i))return i.values.map(i=>removeIndent(i)).map(i=>typeof i==`string`?i:i.md||i.txt).filter(e$4);return[]},o=t$3(i.props,t$7(i=>a(i.value).map(a=>[i.key,a])),n$2(([i,a])=>e$4(a)));if(e$7(o))return;let s=t$3(o,t$11(([i])=>i),t$20(i=>i.map(([i,a])=>a))),c={};for(let[i,a]of Object.entries(s))a&&a.length>0&&(c[i]=a.length===1?a[0]:a);return e$7(c)?void 0:c}parseMarkdownOrString(i){if(isMarkdownOrString(i))return removeIndent(i)}convertTags(i){return this.parseTags(i)}parseTags(i){let a=i?.tags;if(!a)return null;let o=[];for(;a;)o.push(...this.tryMap(`base`,a.values,i=>nonNullable(i.tag.ref,`Tag reference is not resolved`).name).filter(e$4)),a=a.prev;return isNonEmptyArray(o)?n$1(o):null}convertLinks(i){return this.parseLinks(i)}parseLinks(i){if(!i?.props||i.props.length===0)return;let a=this.tryMap(`base`,n$2(i.props,isLinkProperty),i=>{let a=i.value;if(e$8(a))return;let o=e$4(i.title)?toSingleLine(i.title):void 0,s=this.services.lsp.DocumentLinkProvider.relativeLink(this.doc,a);return exact({url:a,title:o,relative:s&&s!==a?s:void 0})});return isNonEmptyArray(a)?a:void 0}parseIconProperty(i){if(!i||!this.isValid(i))return;let{libicon:a,value:o}=i;switch(!0){case!!a:{let o=a.ref?.name;if(!o){this.logError(`Library icon ${a.$refText} is not a valid library icon`,i);return}return o}case o&&o===`none`:return o;case o&&hasProtocol(o):if(o.startsWith(`file:`)){this.logError(`Icon property '${o}' used the 'file' protocol which is not supported`,i);return}return o;case o&&o.startsWith(`@`):return this.parseImageAlias(o);case o&&isRelative(o):return joinRelativeURL(this.doc.uri.toString(),`../`,o);case o&&hasLeadingSlash(o):return joinURL(this.project.folderUri.toString(),o);default:this.logError(`Icon property '${o}' is not a valid URL, library icon, image alias or 'none'`,i);return}}parseImageAlias(i){let a=i.indexOf(`/`),o=a>0?i.substring(0,a):i,s=a>0?i.substring(a+1):``,c={"@":`./images`,...this.project.config.imageAliases}[o];if(!c){logger$4.warn(`Image alias "${o}" not found in project configuration`);return}let l=s?joinURL(c,s):c;return joinURL(this.project.folderUri.toString(),l)}parseColorLiteral(i){if(this.isValid(i)){if(isHexColor(i))return`#${i.hex}`;if(isRGBAColor(i)){let a=e$6(i.alpha)?i.alpha:void 0;return e$9(i.alpha)&&(a=parseAstPercent(i.alpha)/100),a===void 0?`rgb(${i.red},${i.green},${i.blue})`:`rgba(${i.red},${i.green},${i.blue},${a})`}nonexhaustive(i)}}parseElementStyle(i){if(!i)return{};if(e$11(i)){let a=this.parseStyleProps(i.find(isElementStyleProperty)?.props);try{let o=this.parseIconProperty(i.find(isIconProperty));o&&(a.icon=o)}catch(i){this.logError(i)}return a}return this.parseStyleProps(i.props)}parseStyleProps(i){let a={};if(!i||i.length===0)return a;for(let o of i)if(this.isValid(o))try{switch(!0){case isBorderProperty(o):e$4(o.value)&&(a.border=o.value);break;case isColorProperty(o):{let i=toColor(o);e$4(i)&&(a.color=i);break}case isShapeProperty(o):e$4(o.value)&&(a.shape=o.value);break;case isIconProperty(o):{let i=this.parseIconProperty(o);e$4(i)&&(a.icon=i);break}case isIconColorProperty(o):{let i=toColor(o);e$4(i)&&(a.iconColor=i);break}case isIconSizeProperty(o):e$4(o.value)&&(a.iconSize=parseAstSizeValue(o));break;case isIconPositionProperty(o):e$4(o.value)&&(a.iconPosition=parseAstIconPositionValue(o));break;case isOpacityProperty(o):a.opacity=parseAstOpacityProperty(o);break;case isMultipleProperty(o):a.multiple=e$12(o.value)?o.value:!1;break;case isShapeSizeProperty(o):e$4(o.value)&&(a.size=parseAstSizeValue(o));break;case isPaddingSizeProperty(o):e$4(o.value)&&(a.padding=parseAstSizeValue(o));break;case isTextSizeProperty(o):e$4(o.value)&&(a.textSize=parseAstSizeValue(o));break;default:nonexhaustive(o)}}catch(i){this.logError(i,o)}return exact(a)}parseBaseProps(i,a){let o=removeIndent(a?.title??parseMarkdownAsString(i.title)),s=a?.description?{txt:removeIndent(a.description)}:this.parseMarkdownOrString(i.description);return exact({title:o,summary:a?.summary?{txt:removeIndent(a.summary)}:this.parseMarkdownOrString(i.summary),description:s,technology:toSingleLine(a?.technology)??removeIndent(parseMarkdownAsString(i.technology))})}};function*streamDeploymentModel(i){let a=LinkedList.from(i.parseResult.value.deployments.flatMap(i=>i.elements)),o=[],s;for(;s=a.shift();){if(isDeploymentRelation(s)){o.push(s);continue}if(s.body&&s.body.elements.length>0)for(let i of s.body.elements)a.push(i);yield s}yield*o}function DeploymentModelParser(i){return class a extends i{parseDeployment(){let i=this.doc;for(let a of streamDeploymentModel(i))try{switch(!0){case isDeploymentRelation(a):this.isValid(a)&&i.c4DeploymentRelations.push(this.parseDeploymentRelation(a));break;case isDeployedInstance(a):i.c4Deployments.push(this.parseDeployedInstance(a));break;case isDeploymentNode$1(a):i.c4Deployments.push(this.parseDeploymentNode(a));break;case isExtendDeployment(a):{let o=this.parseExtendDeployment(a);o&&i.c4ExtendDeployments.push(o);break}default:nonexhaustive(a)}}catch(i){this.logError(i,a,`deployment`)}}parseDeploymentNode(i){let a=this.isValid,o=this.resolveFqn(i),s=nonNullable(i.kind.ref,`DeploymentKind not resolved`).name,c=this.parseTags(i.body)??void 0,l=this.parseLinks(i.body),d=this.parseElementStyle(i.body?.props),f=this.getMetadata(i.body?.props.find(isMetadataProperty)),p=t$3(i.body?.props??[],n$2(a),n$2(isElementStringProperty),t$25(i=>[i.key,i.value])),{title:h,...g}=this.parseBaseProps(p,{title:i.title,summary:i.summary});return exact({id:o,kind:s,title:h??nameFromFqn(o),...g,tags:c,links:l,style:d,metadata:f})}parseDeployedInstance(i){let a=this.isValid,o=this.resolveFqn(i),s=this.parseFqnRef(i.target.modelElement);invariant(FqnRef.isModelRef(s)||FqnRef.isImportRef(s),`Target must be a model reference`);let c=this.parseTags(i.body)??void 0,l=this.parseElementStyle(i.body?.props),d=this.getMetadata(i.body?.props.find(isMetadataProperty)),f=t$3(i.body?.props??[],n$2(a),n$2(isElementStringProperty),t$25(i=>[i.key,i.value])),p=this.parseBaseProps(f,{title:i.title,summary:i.summary});return exact({id:o,element:s,tags:c,links:this.parseLinks(i.body),...p,style:l,metadata:d})}parseExtendDeployment(i){let a=this.parseTags(i.body),o=this.getMetadata(i.body?.props.find(isMetadataProperty)),s=this.parseLinks(i.body);return!a&&e$7(o??{})&&!s?null:exact({id:this.resolveFqn(i),astPath:this.getAstNodePath(i),metadata:o,tags:a,links:s})}_resolveDeploymentRelationSource(i){if(e$3(i.source))return this.parseFqnRef(i.source);if(i.$container.$type===`DeploymentNodeBody`||i.$container.$type===`DeployedInstanceBody`)return{deployment:this.resolveFqn(i.$container.$container)};throw Error(`RelationRefError: Invalid container for sourceless relation`)}parseDeploymentRelation(i){let a=this.isValid,o=this.getAstNodePath(i),s=this._resolveDeploymentRelationSource(i);invariant(FqnRef.isDeploymentRef(s),`Invalid source for deployment relation`);let c=this.parseFqnRef(i.target);invariant(FqnRef.isDeploymentRef(c),`Invalid target for deployment relation`);let l=this.convertTags(i)??this.convertTags(i.body)??void 0,d=this.convertLinks(i.body),f=(i.kind??i.dotKind?.kind)?.ref?.name,p=this.getMetadata(i.body?.props.find(isMetadataProperty)),h=t$3(i.body?.props??[],n$2(isRelationStringProperty),n$2(i=>e$4(i.value)),t$25(i=>[i.key,i.value])),g=t$3(i.body?.props??[],n$2(isRelationNavigateToProperty),n$4())?.value.view.ref?.name,_=this.parseBaseProps(h,{title:i.title}),v=i.body?.props.find(isRelationStyleProperty);return exact({id:stringHash$1(`deployment`,o,s.deployment,c.deployment),source:s,target:c,..._,metadata:p,kind:f,tags:l,links:d,...toRelationshipStyle(v?.props,a),navigateTo:g,astPath:o})}}}function DeploymentViewParser(i){return class a extends i{parseDeploymentView(i){let a=i.body;invariant(a,`DynamicElementView body is not defined`);let o=a.props.filter(this.isValid),s=this.getAstNodePath(i),c=i.name;c||=`deployment_`+stringHash$1(this.doc.uri.toString(),s);let{title:l=null,description:d=null}=this.parseBaseProps(t$3(o,n$2(isViewStringProperty),t$25(i=>[i.key,i.value]))),f=this.convertTags(a),p=this.convertLinks(a);ViewOps.writeId(i,c);let h=parseViewManualLayout(i);return{[c4._type]:`deployment`,id:c,astPath:s,title:toSingleLine(l)??null,description:d,tags:f,links:isNonEmptyArray(p)?p:null,rules:this.tryMap(`deployment`,a.rules,i=>this.parseDeploymentViewRule(i)),...h&&{manualLayout:h}}}parseDeploymentViewRule(i){if(isDeploymentViewRulePredicate(i))return this.parseDeploymentViewRulePredicate(i);if(isViewRuleAutoLayout(i))return toAutoLayout(i);if(isDeploymentViewRuleStyle(i))return this.parseDeploymentViewRuleStyle(i);nonexhaustive(i)}parseDeploymentViewRulePredicate(i){let a=[],o=i.expr;for(;o;){try{let i=o.value;e$1(i)&&this.isValid(i)&&a.unshift(this.parseExpressionV2(i))}catch(i){logWarnError(i)}o=o.prev}return i.isInclude?{include:a}:{exclude:a}}parseDeploymentViewRuleStyle(i){let a=this.parseStyleProps(i.props.filter(isStyleProperty)),o=removeIndent(parseMarkdownAsString(i.props.find(isNotationProperty)?.value));return{targets:this.parseFqnExpressions(i.targets),style:a,...o&&{notation:o}}}}}const parseEquals=({operator:i,not:a},o)=>i.startsWith(`!=`)?{neq:o}:i.startsWith(`=`)?{eq:o}:a?{neq:o}:{eq:o};function parseParticipant(i){return!isWhereRelationParticipantKind(i)&&!isWhereRelationParticipantTag(i)?null:i.participant}function parseWhereClause(i){switch(!0){case isWhereTagEqual(i):{let a=i.value.tag.ref?.name,o=parseParticipant(i);invariant(a,`Expected tag name`);let s={tag:parseEquals(i,a)};return o?{participant:o,operator:s}:s}case isWhereKindEqual(i):{let a=i.value?.ref?.name,o=parseParticipant(i);invariant(a,`Expected kind name`);let s={kind:parseEquals(i,a)};return o?{participant:o,operator:s}:s}case isWhereElementNegation(i)||isWhereRelationNegation(i):return{not:parseWhereClause(i.value)};case isWhereBinaryExpression(i):{let a=parseWhereClause(i.left),o=parseWhereClause(i.right);return createBinaryOperator(i.operator.toLowerCase(),a,o)}default:nonexhaustive(i)}}function createBinaryOperator(i,a,o){if(o===null)return a;switch(i){case`and`:{let i=[isAndOperator(a)?a.and:a,isAndOperator(o)?o.and:o].flat();return invariant(isNonEmptyArray(i),`Expected non-empty array`),{and:i}}case`or`:{let i=[isOrOperator(a)?a.or:a,isOrOperator(o)?o.or:o].flat();return invariant(isNonEmptyArray(i),`Expected non-empty array`),{or:i}}default:nonexhaustive(i)}}function ExpressionV2Parser(i){return class a extends i{parseFqnRef(i){let a=nonNullable(i.value?.ref,()=>`Element "${i.$cstNode?.text}" is not resolved`);if(isImported(a)){let i={project:projectIdFrom(a),model:this.resolveFqn(nonNullable(a.imported.ref,`Imported "${a.$cstNode?.text}" is not resolved`))};return this.doc.c4Imports.set(i.project,i.model),i}if(isElement(a)){let o=importsRef(i);if(o){let i={project:projectIdFrom(o),model:this.resolveFqn(a)};return this.doc.c4Imports.set(i.project,i.model),i}let s=instanceRef(i);return s?{deployment:this.resolveFqn(s),element:this.resolveFqn(a)}:{model:this.resolveFqn(a)}}if(isDeploymentElement(a))return{deployment:this.resolveFqn(a)};nonexhaustive(a)}parseExpressionV2(i){if(isFqnExprOrWith(i))return this.parseFqnExprOrWith(i);if(isRelationExprOrWith(i))return this.parseRelationExprOrWith(i);nonexhaustive(i)}parseFqnExprOrWith(i){if(isFqnExprWith(i))return this.parseFqnExprWith(i);if(isFqnExprOrWhere(i))return this.parseFqnExprOrWhere(i);nonexhaustive(i)}parseFqnExprWith(i){let a=this.parseFqnExprOrWhere(i.subject);return(i.custom?.props??[]).reduce((i,a)=>{if(!this.isValid(a))return i;if(isNavigateToProperty(a)){let o=a.value.view.$refText;return e$4(o)&&(i.custom.navigateTo=o),i}if(isNotesProperty(a)){let o=this.parseMarkdownOrString(a.value);return o&&(i.custom[a.key]=o),i}if(isElementStringProperty(a)){if(a.key===`description`||a.key===`summary`){let o=this.parseMarkdownOrString(a.value);return o&&(i.custom.description=o),i}let o=removeIndent(parseMarkdownAsString(a.value));return o&&(i.custom[a.key]=o),i}if(isIconProperty(a)){let s=this.parseIconProperty(a);return e$3(s)&&(i.custom[a.key]=s),i}if(isColorProperty(a)){let s=toColor(a);return e$3(s)&&(i.custom[a.key]=s),i}if(isShapeProperty(a)||isBorderProperty(a))return e$3(a.value)&&(i.custom[a.key]=a.value),i;if(isOpacityProperty(a))return e$3(a.value)&&(i.custom[a.key]=parseAstOpacityProperty(a)),i;if(isIconColorProperty(a)){let s=toColor(a);return e$3(s)&&(i.custom[a.key]=s),i}if(isNotationProperty(a)){let o=e$4(a.value)?removeIndent(parseMarkdownAsString(a.value)):void 0;return o&&(i.custom[a.key]=o),i}if(isMultipleProperty(a))return e$12(a.value)&&(i.custom[a.key]=a.value),i;if(isShapeSizeProperty(a)||isTextSizeProperty(a)||isPaddingSizeProperty(a)||isIconSizeProperty(a))return e$4(a.value)&&(i.custom[a.key]=parseAstSizeValue(a)),i;if(isIconPositionProperty(a))return e$4(a.value)&&(i.custom[a.key]=a.value),i;nonexhaustive(a)},{custom:{expr:a}})}parseFqnExprOrWhere(i){if(isFqnExprWhere(i))return this.parseFqnExprWhere(i);if(isFqnExpr(i))return this.parseFqnExpr(i);nonexhaustive(i)}parseFqnExprWhere(i){return invariant(!isFqnExprWhere(i.subject),`FqnExprWhere is not allowed as subject of FqnExprWhere`),{where:{expr:this.parseFqnExpr(i.subject),condition:i.where?parseWhereClause(i.where):{kind:{neq:`--always-true--`}}}}}parseFqnExpr(i){if(isWildcardExpression(i))return{wildcard:!0};if(isElementKindExpression(i))return invariant(i.kind?.ref,`ElementKind "${i.$cstNode?.text}" is not resolved`),{elementKind:i.kind.ref.name,isEqual:i.isEqual};if(isElementTagExpression(i))return invariant(i.tag.tag.ref,`Tag ${i.$cstNode?.text} is not resolved`),{elementTag:i.tag.tag.$refText,isEqual:i.isEqual};if(isFqnRefExpr(i))return this.parseFqnRefExpr(i);nonexhaustive(i)}parseFqnRefExpr(i){let a=this.parseFqnRef(i.ref);switch(!0){case i.selector===`._`:return{ref:a,selector:`expanded`};case i.selector===`.**`:return{ref:a,selector:`descendants`};case i.selector===`.*`:return{ref:a,selector:`children`};default:return{ref:a}}}parseFqnExpressions(i){let a=[],o=i;for(;o;){try{e$1(o.value)&&this.isValid(o.value)&&a.push(this.parseFqnExpr(o.value))}catch(i){this.logError(i,o.value,`fqnref`)}o=o.prev}return a.reverse()}parseRelationExprOrWith(i){if(isRelationExprWith(i))return this.parseRelationExprWith(i);if(isRelationExprOrWhere(i))return this.parseRelationExprOrWhere(i);nonexhaustive(i)}parseRelationExprWith(i){let a=this.parseRelationExprOrWhere(i.subject);return{customRelation:{...this.parseCustomRelationProperties(i.custom),expr:a}}}parseCustomRelationProperties(i){return(i?.props??[]).reduce((i,a)=>{if(isNotesProperty(a)){let o=this.parseMarkdownOrString(a.value);return o&&(i[a.key]=o),i}if(isRelationStringProperty(a)||isNotationProperty(a)){if(a.key===`description`){let o=this.parseMarkdownOrString(a.value);return o&&(i.description=o),i}let o=removeIndent(parseMarkdownAsString(a.value));return o&&(i[a.key]=o),i}if(isArrowProperty(a))return e$4(a.value)&&(i[a.key]=a.value),i;if(isColorProperty(a)){let o=toColor(a);return e$4(o)&&(i[a.key]=o),i}if(isLineProperty(a))return e$4(a.value)&&(i[a.key]=a.value),i;if(isRelationNavigateToProperty(a)){let o=a.value.view.ref?.name;return e$4(o)&&(i[a.key]=o),i}nonexhaustive(a)},{})}parseRelationExprOrWhere(i){if(isRelationExprWhere(i))return this.parseRelationExprWhere(i);if(isRelationExpr(i))return this.parseRelationExpr(i);nonexhaustive(i)}parseRelationExprWhere(i){invariant(!isRelationExprWhere(i.subject),`RelationExprWhere is not allowed as subject of RelationExprWhere`);let a=this.parseRelationExpr(i.subject),o=a.where?.expr??a,s=a.where?.condition,c=i.where?parseWhereClause(i.where):null,l;return l=c&&s?createBinaryOperator(`and`,s,c):c??s??{kind:{neq:`--always-true--`}},{where:{expr:o,condition:l}}}parseRelationExpr(i){switch(i.$type){case`DirectedRelationExpr`:return this.wrapInWhere({source:this.parseFqnExpr(i.source.from),target:this.parseFqnExpr(i.target),isBidirectional:i.source.isBidirectional},this.parseInlineKindCondition(i.source));case`InOutRelationExpr`:return{inout:this.parseFqnExpr(i.inout.to)};case`OutgoingRelationExpr`:return this.wrapInWhere({outgoing:this.parseFqnExpr(i.from)},this.parseInlineKindCondition(i));case`IncomingRelationExpr`:return{incoming:this.parseFqnExpr(i.to)};default:nonexhaustive(i)}}parseInlineKindCondition(i){let a=i.kind??i.dotKind?.kind;return a?a.ref?{kind:{eq:a.ref?.name}}:(this.logError(`RelationshipKind "${a.$refText}" is not resolved`,i,`fqnref`),null):null}wrapInWhere(i,a){return a?{where:{expr:i,condition:a}}:i}}}function GlobalsParser(i){return class a extends i{parseGlobals(){let{parseResult:i,c4Globals:a}=this.doc,o=this.isValid,s=i.value.globals.filter(o),c=s.flatMap(i=>i.predicates.filter(o));for(let i of c)try{let o=i.name;if(!e$4(o))continue;if(o in a.predicates){this.logError(`Global predicate named "${o}" is already defined`,i,`globals`);continue}this.parseAndStoreGlobalPredicateGroupOrDynamic(i,o,a)}catch(a){this.logError(a,i,`globals`)}let l=s.flatMap(i=>i.styles.filter(o));for(let i of l)try{let o=i.id.name;if(!e$4(o))continue;if(o in a.styles){this.logError(`Global style named "${o}" is already defined`,i,`globals`);continue}let s=this.parseGlobalStyleOrGroup(i);t$4(s,1)&&(a.styles[o]=s)}catch(a){this.logError(a,i,`globals`)}}parseAndStoreGlobalPredicateGroupOrDynamic(i,a,o){if(isGlobalPredicateGroup(i)){let s=this.parseGlobalPredicateGroup(i);t$4(s,1)&&(o.predicates[a]=s);return}if(isGlobalDynamicPredicateGroup(i)){let s=this.parseGlobalDynamicPredicateGroup(i);t$4(s,1)&&(o.dynamicPredicates[a]=s);return}nonexhaustive(i)}parseGlobalPredicateGroup(i){return i.predicates.map(i=>this.parseViewRulePredicate(i))}parseGlobalDynamicPredicateGroup(i){return i.predicates.map(i=>this.parseDynamicViewIncludePredicate(i))}parseGlobalStyleOrGroup(i){if(isGlobalStyle(i))return[this.parseViewRuleStyle(i)];if(isGlobalStyleGroup(i))return i.styles.map(i=>this.parseViewRuleStyle(i));nonexhaustive(i)}}}function ImportsParser(i){return class a extends i{parseImports(){let i=this.doc.parseResult.value.imports??[];for(let a of i){let i=a.project,o=a.imports;for(;o;){try{this.doc.c4Imports.set(i,this.resolveFqn(nonNullable(o.imported.ref,`ElementRef is empty of imported: ${o.imported.$refText}`)))}catch(i){this.logError(i,o,`imports`)}o=o.prev}}}}}function*streamModel(i){let a=LinkedList.from(i.parseResult.value.models.flatMap(i=>i.elements)),o=[],s;for(;s=a.shift();){if(isRelation(s)){o.push(s);continue}if(isExtendRelation(s)){o.push(s);continue}if(s.body?.elements&&t$4(s.body.elements,1))for(let i of s.body.elements)a.push(i);yield s}yield*o}function ModelParser(i){return class a extends i{parseModel(){let i=this.doc;for(let a of streamModel(i))try{if(isElement(a)){i.c4Elements.push(this.parseElement(a));continue}if(isRelation(a)){i.c4Relations.push(this.parseRelation(a));continue}if(isExtendElement(a)){let o=this.parseExtendElement(a);o&&i.c4ExtendElements.push(o);continue}if(isExtendRelation(a)){let o=this.parseExtendRelation(a);o&&i.c4ExtendRelations.push(o);continue}nonexhaustive(a)}catch(i){this.logError(i,a,`model`)}}parseElement(i){let a=this.isValid,o=this.resolveFqn(i),s=nonNullable(i.kind.ref,`Element kind is not resolved`).name,c=this.parseTags(i.body),l=this.parseElementStyle(i.body?.props),d=this.getMetadata(i.body?.props.find(isMetadataProperty)),f=this.getAstNodePath(i),[p,h,g]=i.props??[],_=t$3(i.body?.props??[],n$2(a),n$2(isElementStringProperty),t$25(i=>[i.key,i.value])),{title:v,...y}=this.parseBaseProps(_,{title:p,summary:h,technology:g});return exact$1({id:o,kind:s,astPath:f,title:v,metadata:d,tags:c??void 0,links:this.parseLinks(i.body),...y,style:l})}parseExtendElement(i){let a=this.parseTags(i.body),o=this.getMetadata(i.body?.props.find(isMetadataProperty)),s=this.parseLinks(i.body);if(!a&&e$8(o)&&!s)return null;let c=this.getAstNodePath(i);return exact$1({id:this.resolveFqn(i),astPath:c,metadata:o,tags:a,links:s})}parseExtendRelation(i){let a=this.parseFqnRef(i.source),o=this.parseFqnRef(i.target);invariant(FqnRef$1.isModelRef(a)||FqnRef$1.isImportRef(a),`Source must be a model reference`),invariant(FqnRef$1.isModelRef(o)||FqnRef$1.isImportRef(o),`Target must be a model reference`);let s=this.parseTags(i.body),c=this.getMetadata(i.body?.props.find(isMetadataProperty)),l=this.getAstNodePath(i),d=this.parseLinks(i.body);if(!s&&e$7(c??{})&&!d)return null;let f=(i.kind??i.dotKind?.kind)?.ref?.name,{title:p=``}=this.parseBaseProps({},{title:i.title});return exact$1({id:stringHash$1(`extend-relation`,FqnRef$1.flatten(a),FqnRef$1.flatten(o),f??`default`,p),astPath:l,metadata:c,tags:s,links:d})}_resolveRelationSource(i){if(e$3(i.source)){let a=this.parseFqnRef(i.source);return invariant(FqnRef$1.isModelRef(a)||FqnRef$1.isImportRef(a),`Relation source must be a model reference`),a}if(isElementBody(i.$container)||isExtendElementBody(i.$container))return{model:this.resolveFqn(i.$container.$container)};throw Error(`RelationRefError: Invalid container for sourceless relation`)}parseRelation(i){let a=this.isValid,o=this._resolveRelationSource(i),s=this.parseFqnRef(i.target);invariant(FqnRef$1.isModelRef(s)||FqnRef$1.isImportRef(s),`Target must be a model reference`);let c=this.parseTags(i)??this.parseTags(i.body)??void 0,l=this.parseLinks(i.body),d=(i.kind??i.dotKind?.kind)?.ref?.name,f=this.getMetadata(i.body?.props.find(isMetadataProperty)),p=this.getAstNodePath(i),h=t$3(i.body?.props??[],n$2(isRelationStringProperty),n$2(i=>e$4(i.value)),t$25(i=>[i.key,i.value])),g=t$3(i.body?.props??[],n$2(isRelationNavigateToProperty),t(i=>i.value.view.ref?.name),n$2(e$4),n$4()),{title:_=``,description:v,technology:y}=this.parseBaseProps(h,{title:i.title,description:i.description,technology:i.technology}),b=i.body?.props.find(isRelationStyleProperty);return exact$1({id:stringHash$1(p,o.model,s.model),astPath:p,source:o,target:s,title:_,metadata:f,kind:d,tags:c,links:l,navigateTo:g,description:v,technology:y,...toRelationshipStyle(b?.props,a)})}}}function PredicatesParser(i){return class a extends i{parsePredicate(i){return this.parseExpressionV2(i)}parseElementPredicate(i){if(isFqnExprWith(i))return this.parseFqnExprWith(i);if(isFqnExprOrWhere(i))return this.parseFqnExprOrWhere(i);nonexhaustive(i)}parseElementPredicateOrWhere(i){return this.parseFqnExprOrWhere(i)}parseElementExpression(i){return this.parseFqnExpr(i)}parseElementPredicateWhere(i){return this.parseFqnExprWhere(i)}parseElementPredicateWith(i){return this.parseFqnExprWith(i)}parseRelationPredicate(i){return this.parseRelationExprOrWith(i)}parseRelationPredicateOrWhere(i){return this.parseRelationExprOrWhere(i)}parseRelationPredicateWhere(i){return this.parseRelationExprWhere(i)}parseRelationPredicateWith(i){return this.parseRelationExprWith(i)}parseRelationExpression(i){return this.parseRelationExpr(i)}}}function SpecificationParser(i){return class a extends i{parseSpecification(){let{parseResult:{value:{specifications:i}},c4Specification:a}=this.doc,o=this.isValid;for(let s of i.flatMap(i=>i.elements.filter(o)))try{Object.assign(a.elements,this.parseElementSpecificationNode(s))}catch(i){this.logError(i,s,`specification`)}for(let s of i.flatMap(i=>i.deploymentNodes.filter(o)))try{Object.assign(a.deployments,this.parseElementSpecificationNode(s))}catch(i){this.logError(i,s,`specification`)}let s=i.flatMap(i=>i.relationships.filter(this.isValid));for(let{kind:i,props:o}of s)try{let s=i.name;if(!e$4(s))continue;if(s in a.relationships){this.logError(`Relationship kind "${s}" is already defined`,i,`specification`);continue}let c=t$3(o.filter(isSpecificationRelationshipStringProperty)??[],n$2(i=>this.isValid(i)&&e$1(i.value)),t$25(i=>[i.key,removeIndent(parseMarkdownAsString(i.value))]),t$23(e$5));a.relationships[s]={...c,...toRelationshipStyle(o.filter(isRelationshipStyleProperty),this.isValid)}}catch(a){this.logError(a,i,`specification`)}let c=i.flatMap(i=>i.tags.filter(this.isValid));for(let i of c)try{let o=i.tag.name,s=this.getAstNodePath(i.tag),c=i.color&&this.parseColorLiteral(i.color);if(o in a.tags){this.logError(`Tag ${o} is already defined, skipping duplicate`,i,`specification`);continue}e$4(o)&&(a.tags[o]={astPath:s,...c?{color:c}:{}})}catch(a){this.logError(a,i,`specification`)}let f=i.flatMap(i=>i.colors.filter(o));for(let{name:i,color:o}of f)try{let s=i.name;if(s in a.colors){this.logError(`Custom color "${s}" is already defined`,i,`specification`);continue}a.colors[s]={color:nonNullable$1(this.parseColorLiteral(o),`Color "${s}" is not valid`)}}catch(i){this.logError(i,o,`specification`)}}parseElementSpecificationNode(i){let{kind:a,props:o}=i,s=a.name;if(!e$4(s))throw Error(`DeploymentNodeKind name is not resolved`);let c=this.parseTags(i),l=this.parseElementStyle(o.find(isElementStyleProperty)),d=this.parseLinks(i),f=t$3(o.filter(isSpecificationElementStringProperty)??[],n$2(i=>this.isValid(i)),t$25(i=>[i.key,i.value])),p=this.parseBaseProps(f),h=removeIndent(parseMarkdownAsString(f.notation));return{[s]:exact({...p,notation:h,tags:c??void 0,...d&&c4.isNonEmptyArray(d)&&{links:d},style:l})}}}}function ViewsParser(i){return class a extends i{parseViews(){let i=this.isValid;for(let a of this.doc.parseResult.value.views){let o=a.styles.flatMap(a=>{try{return i(a)?this.parseViewRuleStyleOrGlobalRef(a):[]}catch(i){return this.logError(i,a,`views`),[]}}),s=a.folder&&!e$7(a.folder.trim())?toSingleLine(a.folder):null;for(let c of a.views)try{if(!i(c))continue;switch(!0){case isElementView$1(c):this.doc.c4Views.push(this.parseElementView(c,o));break;case isDynamicView$1(c):this.doc.c4Views.push(this.parseDynamicElementView(c,o));break;case isDeploymentView$1(c):this.doc.c4Views.push(this.parseDeploymentView(c));break;default:nonexhaustive(c)}if(s){let i=this.doc.c4Views.at(-1);i.title=s+` / `+(i.title||i.id)}}catch(i){this.logError(i,c,`views`)}}}parseElementView(i,a){let o=i.body;invariant(o,`ElementView body is not defined`);let s=this.getAstNodePath(i),c=null;if(`viewOf`in i){let a=elementRef(i.viewOf),o=a&&safeCall(()=>this.resolveFqn(a));if(o)c=o;else{let a=i.name??`unnamed`,o=i.viewOf.$cstNode?.text??`<unknown>`;this.logError(`viewOf ${a} not resolved ${o}`,i.viewOf)}}let l=i.name;l||=`view_`+stringHash$1(this.doc.uri.toString(),s,c??``);let{title:d=null,description:f=null}=this.parseBaseProps(t$3(o.props,n$2(i=>this.isValid(i)),n$2(isViewStringProperty),t$25(i=>[i.key,i.value]))),p=this.convertTags(o),h=this.convertLinks(o),g=parseViewManualLayout(i),_={[c4._type]:`element`,id:l,astPath:s,title:toSingleLine(d)??null,description:f,tags:p,links:isNonEmptyArray(h)?h:null,rules:[...a,...this.tryMap(`views`,o.rules,i=>this.parseElementViewRule(i))],...c&&{viewOf:c},...g&&{manualLayout:g}};if(ViewOps.writeId(i,_.id),`extends`in i){let a=i.extends.view.ref;return invariant(a?.name,`view extends is not resolved: `+i.$cstNode?.text),Object.assign(_,{extends:a.name})}return _}parseElementViewRule(i){if(isViewRulePredicate(i))return this.parseViewRulePredicate(i);if(isViewRuleGlobalPredicateRef(i))return this.parseViewRuleGlobalPredicateRef(i);if(isViewRuleStyleOrGlobalRef(i))return this.parseViewRuleStyleOrGlobalRef(i);if(isViewRuleAutoLayout(i))return toAutoLayout(i);if(isViewRuleGroup(i))return this.parseViewRuleGroup(i);if(isViewRuleRank(i))return this.parseViewRuleRank(i);nonexhaustive(i)}parseViewRulePredicate(i){let a=[],o=i.exprs;for(;o;){let{value:i,prev:s}=o;if(this.tryParse(`views`,i,()=>{let o=this.parsePredicate(i);a.unshift(o)}),!s)break;o=s}return i.isInclude?{include:a}:{exclude:a}}parseViewRuleGlobalPredicateRef(i){return{predicateId:i.predicate.$refText}}parseViewRuleStyleOrGlobalRef(i){if(isViewRuleStyle(i))return this.parseViewRuleStyle(i);if(isViewRuleGlobalStyle(i))return this.parseViewRuleGlobalStyle(i);nonexhaustive(i)}parseViewRuleGroup(i){let a=[];for(let o of i.groupRules)try{if(!this.isValid(o))continue;if(isViewRulePredicate(o)){a.push(this.parseViewRulePredicate(o));continue}if(isViewRuleGroup(o)){a.push(this.parseViewRuleGroup(o));continue}nonexhaustive(o)}catch(i){this.logError(i,o,`views`)}return{title:toSingleLine(i.title)??null,groupRules:a,...this.parseStyleProps(i.props)}}parseViewRuleRank(i){let a=this.parseFqnExpressions(i.targets).filter(i=>c4.ModelExpression.isFqnExpr(i));return{rank:i.value??`same`,targets:a}}parseViewRuleStyle(i){let a=this.parseFqnExpressions(i.targets).filter(i=>c4.ModelExpression.isFqnExpr(i)),o=this.parseStyleProps(i.props.filter(isStyleProperty)),s=removeIndent(parseMarkdownAsString(i.props.find(isNotationProperty)?.value));return{targets:a,style:o,...s&&{notation:s}}}parseViewRuleGlobalStyle(i){return{styleId:i.style.$refText}}parseDynamicElementView(i,a){let o=i.body;invariant(o,`DynamicElementView body is not defined`);let s=this.isValid,c=o.props.filter(s),l=this.getAstNodePath(i),d=i.name;d||=`dynamic_`+stringHash$1(this.doc.uri.toString(),l);let{title:p=null,description:h=null}=this.parseBaseProps(t$3(c,n$2(isViewStringProperty),t$25(i=>[i.key,i.value]))),g=this.convertTags(o),_=this.convertLinks(o);ViewOps.writeId(i,d);let v=parseViewManualLayout(i),y=r$1(c,isDynamicViewDisplayVariantProperty)?.value;return{[c4._type]:`dynamic`,id:d,astPath:l,title:toSingleLine(p)??null,description:h,tags:g,links:isNonEmptyArray(_)?_:null,variant:y,rules:[...a,...this.tryMap(`views`,o.rules,i=>this.parseDynamicViewRule(i))],steps:this.tryMap(`views`,o.steps,i=>isDynamicViewParallelSteps(i)?this.parseDynamicParallelSteps(i):this.parseDynamicStep(i)),...v&&{manualLayout:v}}}parseDynamicViewRule(i){if(isDynamicViewIncludePredicate(i))return this.parseDynamicViewIncludePredicate(i);if(isDynamicViewGlobalPredicateRef(i))return this.parseViewRuleGlobalPredicateRef(i);if(isViewRuleStyleOrGlobalRef(i))return this.parseViewRuleStyleOrGlobalRef(i);if(isViewRuleAutoLayout(i))return toAutoLayout(i);nonexhaustive(i)}parseDynamicViewIncludePredicate(i){let a=[],o=i.exprs;for(;o;)this.tryParse(`views`,o.value,i=>{if(isFqnExprOrWith(i)){let o=this.parseElementPredicate(i);a.unshift(o)}}),o=o.prev;return{include:a}}parseDynamicParallelSteps(i){let a=pathInsideDynamicView(i),o=this.tryMap(`views`,i.steps,i=>this.parseDynamicStep(i));return invariant(isNonEmptyArray(o),`Dynamic parallel steps must have at least one step`),{parallelId:a,__parallel:o}}parseDynamicStep(i){if(isDynamicStepSingle(i))return this.parseDynamicStepSingle(i);let a=this.recursiveParseDynamicStepChain(i);return invariant(isNonEmptyArray(a),`Dynamic step chain must have at least one step`),{seriesId:pathInsideDynamicView(i),__series:a}}recursiveParseDynamicStepChain(i,a){if(isDynamicStepSingle(i.source)){if(!this.isValid(i.source))return[];let o=this.parseDynamicStepSingle(i.source);if(o.isBackward)return[];let s={...this.parseAbstractDynamicStep(i),source:o.target};return s.target===o.source?s.isBackward=!0:a&&(a.push([o.source,o.target]),a.push([s.source,s.target])),[o,s]}a??=[];let o=this.recursiveParseDynamicStepChain(i.source,a);if(!isNonEmptyArray(o)||!this.isValid(i))return[];let s=t$5(o),c={...this.parseAbstractDynamicStep(i),source:s.target},l=a.findIndex(([i,a])=>i===c.target&&a===c.source);return l===-1?a.push([c.source,c.target]):(c.isBackward=!0,a.splice(l,a.length-l)),[...o,c]}parseDynamicStepSingle(i){let a=elementRef(i.source);if(!a)throw Error(`Invalid reference to source`);let o={...this.parseAbstractDynamicStep(i),source:this.resolveFqn(a)};return i.isBackward&&(o={...o,source:o.target,target:o.source,isBackward:!0}),o}parseAbstractDynamicStep(i){let a=elementRef(i.target);if(!a)throw Error(`Invalid reference to target`);let s={target:this.resolveFqn(a),astPath:pathInsideDynamicView(i)},c=removeIndent(i.title);c&&(s.title=c);let l=i.kind?.ref?.name??i.dotKind?.kind.ref?.name;l&&(s.kind=l);for(let a of i.custom?.props??[])try{switch(!0){case isRelationNavigateToProperty(a):{let i=a.value.view.ref?.name;e$4(i)&&(s.navigateTo=i);break}case isRelationStringProperty(a):case isNotationProperty(a):if(e$3(a.value))if(a.key===`description`){let i=removeIndent(a.value);i&&(s.description=i)}else s[a.key]=removeIndent(parseMarkdownAsString(a.value))??``;break;case isNotesProperty(a):e$3(a.value)&&(s[a.key]=removeIndent(a.value));break;case isArrowProperty(a):e$3(a.value)&&(s[a.key]=a.value);break;case isColorProperty(a):{let i=toColor(a);e$3(i)&&(s[a.key]=i);break}case isLineProperty(a):e$3(a.value)&&(s[a.key]=a.value);break;default:nonexhaustive(a)}}catch(i){this.logError(i,a,`views`)}return s}}}function pathInsideDynamicView(i){let a=i,o=[];for(;!isDynamicViewBody(a);)e$6(a.$containerIndex)&&o.unshift(`@${a.$containerIndex}`),o.unshift(`/${a.$containerProperty??`__invalid__`}`),a=a.$container;return o.join(``)}init_main();const DocumentParserFromMixins=t$3(BaseParser,ExpressionV2Parser,ImportsParser,ModelParser,DeploymentModelParser,DeploymentViewParser,PredicatesParser,SpecificationParser,ViewsParser,GlobalsParser);var DocumentParser=class extends DocumentParserFromMixins{};const logger$3=logger$16.getChild(`parser`),isError=i=>i.severity===DiagnosticSeverity$1.Error;var LikeC4ModelParser=class{cachedParsers=new DefaultWeakMap(i=>this.createParser(i));constructor(i){this.services=i,i.shared.workspace.DocumentBuilder.onDocumentPhase(DocumentState.Linked,async i=>{this.cachedParsers.has(i)&&(logger$3.trace(`Linked: clear cached parser {projectId} document {doc}`,{projectId:i.likec4ProjectId,doc:UriUtils.basename(i.uri)}),this.cachedParsers.delete(i))}),i.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.Linked,async a=>{for(let o of a)if(!i.shared.workspace.ProjectsManager.isExcluded(o))try{this.parse(o)}catch(i){logWarnError(i)}}),i.shared.workspace.DocumentBuilder.onDocumentPhase(DocumentState.Validated,async i=>{i.diagnostics?.some(isError)&&this.cachedParsers.has(i)&&(logger$3.trace(`Validated: clear cached parser {projectId} document {doc} because of errors`,{projectId:i.likec4ProjectId,doc:UriUtils.basename(i.uri)}),this.cachedParsers.delete(i))})}documents(i){return this.services.shared.workspace.LangiumDocuments.projectDocuments(i).map(i=>this.parse(i))}parse(i){return this.forDocument(i).doc}forDocument(i){return this.cachedParsers.get(i)}createParser(i){invariant$1(isLikeC4LangiumDocument(i),`Document ${i.uri.toString()} is not a LikeC4 document`);let a=this.services.shared.workspace.ProjectsManager.getProject(i),o=UriUtils.relative(a.folderUri,i.uri);i.likec4ProjectId?logger$3.trace(`create parser {projectId} document {doc}`,{projectId:i.likec4ProjectId,doc:o}):logger$3.debug(`create parser for document without project {doc}`,{doc:i.uri.fsPath}),i.state<DocumentState.Linked&&logger$3.debug(`Document {doc} is not linked, state is {state}`,{doc:o,state:i.state});let s={c4Specification:{tags:{},elements:{},relationships:{},colors:{},deployments:{}},c4Elements:[],c4ExtendElements:[],c4ExtendDeployments:[],c4ExtendRelations:[],c4Relations:[],c4Deployments:[],c4DeploymentRelations:[],c4Globals:{predicates:{},dynamicPredicates:{},styles:{}},c4Views:[],c4Imports:new MultiMap(Set)};i=Object.assign(i,s);let c=new DocumentParser(this.services,i,a);try{c.parseSpecification(),c.parseImports(),c.parseModel(),c.parseDeployment(),c.parseGlobals(),c.parseViews()}catch(i){throw Error(`Error parsing document ${o}`,{cause:i})}return c}},LikeC4ValueConverter=class extends DefaultValueConverter{runConverter(i,a,o){return i.name===`MarkdownString`?((a.startsWith(`"""`)&&a.endsWith(`"""`)||a.startsWith(`'''`)&&a.endsWith(`'''`))&&(a=a.slice(2,-2)),ValueConverter.convertString(a)):super.runConverter(i,a,o)}};init_main();const{findNodeForKeyword:findNodeForKeyword$1}=grammar_utils_exports,asViewStyleRule=(i,a,o=0)=>{let s=o>0?` `.repeat(o):``;return[s+`style ${i} {`,...t$2(a).map(([i,a])=>s+` ${i} ${i===`opacity`?a.toString()+`%`:a}`),s+`}`]},isMatchingViewRule=(i,a)=>o=>{if(!isViewRuleStyle(o)&&!isDeploymentViewRuleStyle(o))return!1;let s=o.targets.value;if(!s||e$4(o.targets.prev)||s.$type!==`FqnRefExpr`||e$4(s.selector))return!1;let c=s.ref?.value?.ref;return(c?a.resolve(c):null)===i};function changeElementStyle(i,{view:a,viewAst:o,targets:s,style:c}){invariant(o.body,`View ${a.id} has no body`);let l=o.$cstNode;invariant(l,`viewCstNode`);let d=t$5(o.body.rules)?.$cstNode?.range.end??o.body.$cstNode?.range.end;invariant(d,`insertPos is not defined`);let f=l.range.start.character+2,p=i.likec4.FqnIndex,h=n$2(o.body.rules,i=>isViewRuleStyle(i)||isDeploymentViewRuleStyle(i)),g=a[_type]===`element`?a.viewOf??null:null,_=[],v=[];s.forEach(i=>{let a=t$26(h,isMatchingViewRule(i,p)),o=g&&isAncestor(g,i)?i.substring(g.length+1):i;a?_.push({fqn:o,rule:a}):v.push({fqn:o})});let y={start:d,end:d},b=i=>{i.start.line<=y.start.line&&(i.start.line==y.start.line?y.start.character=Math.min(i.start.character,y.start.character):y.start=i.start),i.end.line>=y.end.line&&(i.end.line==y.end.line?y.end.character=Math.max(i.end.character,y.end.character):y.end=i.end)},x=[];if(v.length>0){let i=v.flatMap(({fqn:i})=>asViewStyleRule(i,c,f));x.push(TextEdit$1.insert(d,`
|
|
63
|
+
`+i.join(`
|
|
64
|
+
`))),y.start={line:d.line+1,character:f},y.end={line:d.line+i.length,character:t$5(i)?.length??0}}if(_.length>0)for(let{rule:i}of _){let a=i.$cstNode;invariant(a,`RuleCstNode not found`);for(let[o,s]of t$2(c)){let c=o===`opacity`?s.toString()+`%`:s,l=i.props.find(i=>i.key===o);if(l&&l.$cstNode){let{range:{start:i,end:a}}=l.$cstNode;b({start:i,end:a}),x.push(TextEdit$1.replace({start:i,end:a},o+` `+c));continue}let d=findNodeForKeyword$1(a,`{`)?.range.end;invariant(d,`Opening brace not found`);let f=` `.repeat(a.range.start.character)+` `,p=f+o+` `+c;x.push(TextEdit$1.insert(d,`
|
|
65
|
+
`+p)),b({start:{line:d.line+1,character:f.length},end:{line:d.line+1,character:p.length}})}}return{modifiedRange:y,edits:x}}init_main();const{findNodeForKeyword}=grammar_utils_exports;function changeViewLayout(i,{view:a,viewAst:o,layout:s}){invariant(o.body,`View ${a.id} has no body`);let c=o.$cstNode;invariant(c,`viewCstNode`);let l=toAstViewLayoutDirection(s.direction),d=t$26(o.body.rules,isViewRuleAutoLayout),f=`autoLayout ${l}`;if(e$6(s.rankSep)&&(f+=` ${s.rankSep}`,e$6(s.nodeSep)&&(f+=` ${s.nodeSep}`)),d&&d.$cstNode)return TextEdit$1.replace(d.$cstNode.range,f);let p=findNodeForKeyword(o.body.$cstNode,`}`)?.range.start;invariant(p,`Closing brace not found`);let m=`\t${f}\n\t`;return TextEdit$1.insert(p,m)}init_main();async function removeManualLayoutV1(i,{lookup:a}){if(!a.view.manualLayout)return!1;let o=a.viewAst.$cstNode;invariant(o,`invalid view.$cstNode`);let s=i.shared.lsp.Connection;invariant(s,`LSP Connection not available`);let c=findCommentNode(o,[`BLOCK_COMMENT`]);return c&&hasManualLayout(c.text)?(await s.workspace.applyEdit({label:`LikeC4 - remove manual layout v1 for ${a.view.id}`,edit:{changes:{[a.doc.textDocument.uri]:[TextEdit$1.del(c.range)]}}})).applied:!1}init_main();const logger$2=logger$16.getChild(`model-changes`);var LikeC4ModelChanges=class{locator;constructor(i){this.services=i,this.locator=i.likec4.ModelLocator}async applyChange(i){let a=this.services.shared.lsp.Connection,o=this.services.shared.workspace;try{let{viewId:s,projectId:c,change:l}=i,d=o.ProjectsManager.ensureProject(c);logger$2.debug`Applying model change ${l.op} to view ${s} in project ${d.id}`;let f=this.locator.locateViewAst(s,d.id);if(!f)throw Error(`View ${s} not found in project ${d.id}`);let p={uri:f.doc.textDocument.uri,version:f.doc.textDocument.version};if(l.op===`save-view-snapshot`)return invariant(s===l.layout.id,`View ID does not match, expected `+s+`, got `+l.layout.id),f.view.manualLayout&&a&&await removeManualLayoutV1(this.services,{lookup:f}).catch(i=>{logger$2.warn(`Failed to remove manual layout v1 for view ${s} in project ${d.id}`,{err:i})}),{success:!0,location:await o.ManualLayouts.write(d,l.layout)};if(l.op===`reset-manual-layout`)return f.view.manualLayout&&await removeManualLayoutV1(this.services,{lookup:f}).catch(i=>{logger$2.warn(`Failed to remove manual layout v1 for view ${s} in project ${d.id}`,{err:i})}),{success:!0,location:await o.ManualLayouts.remove(d,s)};invariant(a,`This change only supported in IDE (running as Extension)`);let{edits:m,modifiedRange:h}=this.convertToTextEdit({lookup:f,change:l});if(!m.length)return{success:!1,error:`No changes to apply`};let g=await a.workspace.applyEdit({label:`LikeC4 - change view ${i.viewId}`,edit:{changes:{[p.uri]:m}}});return g.applied?{success:!0,location:{uri:p.uri,range:h}}:(a.window.showErrorMessage(`Failed to apply changes ${g.failureReason}`),{success:!1,error:`Failed to apply changes ${g.failureReason}`})}catch(a){let o=loggable(wrapError(a,`Failed to apply change ${i.change.op} ${i.viewId}`));return logger$2.error(o),{success:!1,error:o}}finally{this.services.likec4.ModelBuilder.clearCache()}}convertToTextEdit({lookup:i,change:a}){switch(a.op){case`change-element-style`:return changeElementStyle(this.services,{...i,targets:a.targets,style:a.style});case`change-autolayout`:{let o=changeViewLayout(this.services,{...i,layout:a.layout});return{modifiedRange:o.range,edits:[o]}}default:nonexhaustive(a)}}},LikeC4NameProvider=class extends DefaultNameProvider{constructor(i){super(),this.services=i}getNameStrict(i){return nonNullable(this.getName(i),`Failed getName for ${this.services.workspace.AstNodeLocator.getAstNodePath(i)}`)}getName(i){if(isNamed(i))return i.name;if(isImported(i))return i.imported.$refText;if(isDeployedInstance(i))return i.target.modelElement.value.$refText}getNameNode(i){if(isNamed(i))return super.getNameNode(i);if(isImported(i))return i.imported.$refNode;if(isDeployedInstance(i))return i.target.modelElement.value.$refNode}};function uniqueDescriptions(i){return t$3(i,t$11(i=>`${i.type}.${i.name}`),t$2(),t$7(([i,a])=>a.length===1?a:[]))}var LikeC4ScopeComputation=class extends DefaultScopeComputation{constructor(i){super(i)}async computeExports(i,a){let o=[];try{let{specifications:a,models:s,views:c,globals:l,likec4lib:d,deployments:f}=i.parseResult.value;this.exportLibrary(d,o,i),this.exportSpecification(a,o,i),this.exportModel(s,o,i),this.exportViews(c,o,i),this.exportGlobals(l,o,i),this.exportDeployments(f,o,i)}catch(i){logWarnError(i)}return o}exportViews(i,a,o){let s=i?.flatMap(i=>i.views);if(!(e$5(s)||s.length===0))for(let i of s)try{e$4(i.name)&&a.push(this.descriptions.createDescription(i,i.name,o))}catch(i){logWarnError(i)}}exportGlobals(i,a,o){if(!(e$5(i)||i.length===0)){for(let s of i.flatMap(i=>i.predicates))try{let i=s;e$4(i.name)&&a.push(this.descriptions.createDescription(i,i.name,o))}catch(i){logWarnError(i)}for(let s of i.flatMap(i=>i.styles))try{let i=s.id;e$4(i.name)&&a.push(this.descriptions.createDescription(i,i.name,o))}catch(i){logWarnError(i)}}}exportModel(i,a,o){if(!(e$5(i)||i.length===0))for(let s of i.flatMap(i=>i.elements))try{isElement(s)&&e$4(s.name)&&a.push(this.descriptions.createDescription(s,s.name,o))}catch(i){logWarnError(i)}}exportLibrary(i,a,o){if(!e$5(i))try{for(let s of i.flatMap(i=>i.icons))a.push(this.descriptions.createDescription(s,s.name,o))}catch(i){logWarnError(i)}}exportSpecification(i,a,o){if(!(e$5(i)||i.length===0))for(let s of i.flatMap(i=>[...i.elements,...i.relationships,...i.deploymentNodes,...i.tags,...i.colors]))try{switch(!0){case isSpecificationDeploymentNodeKind(s):case isSpecificationElementKind(s):e$4(s.kind.name)&&a.push(this.descriptions.createDescription(s.kind,s.kind.name,o));continue;case isSpecificationTag(s):e$4(s.tag.name)&&a.push(this.descriptions.createDescription(s.tag,s.tag.name,o));continue;case isSpecificationRelationshipKind(s):e$4(s.kind.name)&&a.push(this.descriptions.createDescription(s.kind,s.kind.name,o));continue;case isSpecificationColor(s):e$4(s.name.name)&&a.push(this.descriptions.createDescription(s.name,s.name.name,o));continue;default:nonexhaustive(s)}}catch(i){logWarnError(i)}}exportDeployments(i,a,o){let s=i?.flatMap(i=>i.elements);if(!(e$5(s)||s.length===0))for(let i of s)try{isDeploymentNode$1(i)&&e$4(i.name)&&a.push(this.descriptions.createDescription(i,i.name,o))}catch(i){logWarnError(i)}}computeLocalScopes(i,a){return new Promise(a=>{let o=i.parseResult.value,s=[],c=new MultiMap$1;for(let a of o.models)try{s.push(...this.processContainer(a,c,i))}catch(i){logWarnError(i)}for(let a of o.deployments)try{s.push(...this.processDeployments(a,c,i))}catch(i){logWarnError(i)}for(let i of o.imports.flatMap(i=>i.imports))try{let a=i;for(;a;)s.push(this.descriptions.createDescription(a,a.imported.$refText)),a=a.prev}catch(i){logWarnError(i)}uniqueDescriptions(s).forEach(i=>{c.add(o,i)}),a(c)})}processContainer(i,a,o){let s=new MultiMap$1,c=[];for(let l of i.elements){if(isRelation(l))continue;let i;if(isElement(l)?(e$4(l.name)&&s.add(l.name,this.descriptions.createDescription(l,l.name,o)),i=l.body,i&&(a.add(i,this.descriptions.createDescription(l,`this`,o)),a.add(i,this.descriptions.createDescription(l,`it`,o)))):isExtendElement(l)&&(i=l.body),i&&i.elements.length>0)try{c.push(...this.processContainer(i,a,o))}catch(i){logWarnError(i)}}c.length&&t$3(c,n$2(i=>!s.has(i.name)),t$11(i=>i.name),t$27((i,a)=>{i.length===1&&s.add(a,i[0])}));let l=[...s.values()];return a.addAll(i,l),l}processDeployments(i,a,o){let s=new MultiMap$1,c=[];for(let l of i.elements){if(isDeploymentRelation(l))continue;let i=l.body;if(!isExtendDeployment(l)){let c=this.nameProvider.getName(l);if(e$4(c)){let i=this.descriptions.createDescription(l,c,o);s.add(c,i)}i&&(a.add(i,this.descriptions.createDescription(l,`this`,o)),a.add(i,this.descriptions.createDescription(l,`it`,o)))}if(i)try{c.push(...this.processDeployments(i,a,o))}catch(i){logWarnError(i)}}c.length&&t$3(c,n$2(i=>!s.has(i.name)),t$11(i=>i.name),t$27((i,a)=>{i.length===1&&s.add(a,i[0])}));let l=[...s.values()];return a.addAll(i,l),l}};const{getDocument}=ast_utils_exports;var LikeC4ScopeProvider=class extends DefaultScopeProvider{deploymentsIndex;fqnIndex;indexManager;constructor(i){super(i),this.indexManager=i.shared.workspace.IndexManager,this.fqnIndex=i.likec4.FqnIndex,this.deploymentsIndex=i.likec4.DeploymentsIndex}getScope(i){try{let a=projectIdFrom(i.container),o=this.reflection.getReferenceType(i);try{let s=i.container;if(isFqnRef(s))return new StreamScope(this.streamForFqnRef(a,s,i));if(isStrictFqnRef(s))return this.getScopeForStrictFqnRef(a,s,i);if(o!==Element)return this.getProjectScope(a,o,i);if(isImported(s)){let i=projectIdFrom(s);return new StreamScope(this.fqnIndex.rootElements(i))}if(isStrictFqnElementRef(s)&&i.property===`el`){let c=s.parent;return c?new StreamScope(this.fqnIndex.directChildrenOf(a,readStrictFqn(c))):this.getProjectScope(a,o,i)}return new StreamScope(stream(this.computeScope(a,i)))}catch(s){return logWarnError(s),this.getProjectScope(a,o,i)}}catch(i){return logWarnError(i),EMPTY_SCOPE}}*genUniqueDescedants(i){if(!i)return;let a=projectIdFrom(i);if(isElement(i)){let o=this.fqnIndex.getFqn(i);yield*this.fqnIndex.uniqueDescedants(a,o);return}if(isDeploymentNode$1(i)){let o=this.deploymentsIndex.getFqn(i);yield*this.deploymentsIndex.uniqueDescedants(a,o)}}*genScopeExtendElement({element:i}){i.el.$nodeDescription&&(yield i.el.$nodeDescription,yield{...i.el.$nodeDescription,name:`this`},yield{...i.el.$nodeDescription,name:`it`}),yield*this.genUniqueDescedants(elementRef(i))}*genScopeElementView({viewOf:i,extends:a}){if(i){i.modelElement.value.$nodeDescription&&(yield i.modelElement.value.$nodeDescription),yield*this.genUniqueDescedants(elementRef(i));return}if(a){let i=a.view.ref;i&&(yield*this.genScopeElementView(i))}}getScopeForStrictFqnRef(i,a,o){let s=a.parent;return s?new StreamScope(this.deploymentsIndex.directChildrenOf(i,readStrictFqn(s)).filter(i=>this.reflection.isSubtype(i.type,DeploymentNode))):this.getProjectScope(i,DeploymentNode,o)}*genScopeExtendDeployment({deploymentNode:i}){i.value.$nodeDescription&&(yield i.value.$nodeDescription);let a=i.value.ref;a&&isDeploymentNode$1(a)&&(yield*this.genUniqueDescedants(a))}streamForFqnRef(i,a,o){let s=a.parent;if(!s)return stream(this.genScopeForParentlessFqnRef(i,a,o));let c=s.value.ref;if(!c)return EMPTY_STREAM;if(isImported(c))return stream(this.genUniqueDescedants(c.imported.ref));if(isDeploymentNode$1(c))return stream(this.genUniqueDescedants(c));if(isDeployedInstance(c)){let i=c.target.modelElement.value.ref,a=isImported(i)?i.imported.ref:isElement(i)?i:void 0;return stream(this.genUniqueDescedants(a))}return isElement(c)?stream(this.genUniqueDescedants(c)):nonexhaustive(c)}*genScopeForParentlessFqnRef(i,a,o){hasContainerOfType(a,isElementRef)||isFqnRefInsideModel(a)?yield*this.computeScope(i,o,Element):isFqnRefInsideGlobals(a)?(yield*this.computeScope(i,o,Element),yield*this.computeScope(i,o,DeploymentNode),yield*this.computeScope(i,o,DeployedInstance)):(yield*this.computeScope(i,o,DeploymentNode),yield*this.computeScope(i,o,DeployedInstance),hasContainerOfType(a,isDeploymentViewBody)&&(yield*this.computeScope(i,o,Element)));let s=getDocument(a).precomputedScopes;s&&(yield*s.values().filter(i=>this.reflection.isSubtype(i.type,Imported)))}*computeScope(i,a,o=this.reflection.getReferenceType(a)){let s=this.reflection.isSubtype(o,Element),c=this.reflection.isSubtype(o,DeploymentElement),l=getDocument(a.container).precomputedScopes;if(!l){yield*this.getProjectScope(i,o,a).getAllElements();return}let d=i=>this.reflection.isSubtype(i.type,o),f=a.container;for(;f;){let i=l.get(f).filter(d);i.length>0&&(yield*i),c&&isExtendDeploymentBody(f)&&(yield*this.genScopeExtendDeployment(f.$container)),s&&isExtendElementBody(f)&&(yield*this.genScopeExtendElement(f.$container)),s&&isElementViewBody(f)&&(yield*this.genScopeElementView(f.$container)),f=f.$container}yield*this.getProjectScope(i,o,a).getAllElements()}getProjectScope(i,a,o){return a===LibIcon?super.getGlobalScope(a,o):this.globalScopeCache.get(`${i}::${a}`,()=>new MapScope(this.indexManager.projectElements(i,a)))}getGlobalScope(i,a){if(i===LibIcon)return super.getGlobalScope(i,a);let o=projectIdFrom(a.container);return this.getProjectScope(o,i,a)}},import_main=require_main$2();let DidChangeModelNotification;(function(i){i.type=new import_main.NotificationType(`likec4/onDidChangeModel`)})(DidChangeModelNotification||={});let DidChangeProjectsNotification;(function(i){i.type=new import_main.NotificationType0(`likec4/onDidChangeProjects`)})(DidChangeProjectsNotification||={});let DidChangeSnapshotNotification;(function(i){i.type=new import_main.NotificationType(i.Method=`likec4/onDidChangeSnapshot`)})(DidChangeSnapshotNotification||={});let DidRequestOpenViewNotification;(function(i){i.type=new import_main.NotificationType(`likec4/onRequestOpenView`)})(DidRequestOpenViewNotification||={});let FetchComputedModel;(function(i){i.req=new import_main.RequestType(`likec4/fetchComputedModel`)})(FetchComputedModel||={});let FetchViewsFromAllProjects;(function(i){i.req=new import_main.RequestType0(`likec4/fetchViewsFromAllProjects`)})(FetchViewsFromAllProjects||={});let FetchLayoutedModel;(function(i){i.req=new import_main.RequestType(`likec4/fetchLayoutedModel`)})(FetchLayoutedModel||={});let LayoutView;(function(i){i.req=new import_main.RequestType(`likec4/layout-view`)})(LayoutView||={});let ValidateLayout;(function(i){i.req=new import_main.RequestType(`likec4/validate-layout`)})(ValidateLayout||={});let ReloadProjects;(function(i){i.req=new import_main.RequestType0(`likec4/reload-projects`)})(ReloadProjects||={});let FetchProjects;(function(i){i.req=new import_main.RequestType0(`likec4/fetch-projects`)})(FetchProjects||={});let RegisterProject;(function(i){i.req=new import_main.RequestType(`likec4/register-project`)})(RegisterProject||={});let BuildDocuments;(function(i){i.req=new import_main.RequestType(`likec4/build`)})(BuildDocuments||={});let Locate;(function(i){i.req=new import_main.RequestType(`likec4/locate`)})(Locate||={});let ChangeView;(function(i){i.req=new import_main.RequestType(`likec4/change-view`)})(ChangeView||={});let FetchTelemetryMetrics;(function(i){i.req=new import_main.RequestType0(`likec4/metrics`)})(FetchTelemetryMetrics||={});let GetDocumentTags;(function(i){i.req=new import_main.RequestType(`likec4/document-tags`)})(GetDocumentTags||={});let FetchProjectsOverview;(function(i){i.req=new import_main.RequestType0(`likec4/fetch-projects-overview`)})(FetchProjectsOverview||={});const logger$1=logger$16.getChild(`rpc`);var Rpc=class extends ADisposable{constructor(i){super(),this.services=i}init=e$13(()=>{let i=this.services.shared.lsp.Connection;if(!i){logger$1.info(`no connection, skip init ServerRpc`);return}logger$1.info(`init ServerRpc`);let a=this.services.likec4,o=this.services.shared.workspace,s=o.LangiumDocuments,c=o.DocumentBuilder,l=n$6(a=>{a>1?logger$1.debug`send ${`onDidChangeModel`} (${a} batched)`:logger$1.debug`send ${`onDidChangeModel`}`,i.sendNotification(DidChangeModelNotification.type,``).catch(i=>{logger$1.warn(`[ServerRpc] error sending onDidChangeModel:`,{error:i})})},{reducer:(i,a)=>(i??0)+a,triggerAt:`end`,minQuietPeriodMs:130,maxBurstDurationMs:400}),d=n$6(a=>{a>1?logger$1.debug`send ${`DidChangeProjectsNotification`} (${a} batched)`:logger$1.debug`send ${`DidChangeProjectsNotification`}`,i.sendNotification(DidChangeProjectsNotification.type).catch(i=>{logger$1.warn(`[ServerRpc] error sending DidChangeProjectsNotification:`,{error:i})})},{reducer:(i,a)=>(i??0)+a,triggerAt:`end`,minQuietPeriodMs:100,maxBurstDurationMs:500}),f=!0;this.onDispose(a.ModelBuilder.onModelParsed(()=>l.call(1)),o.ProjectsManager.onProjectsUpdate(()=>d.call(1)),i.onRequest(FetchComputedModel.req,async({projectId:i,cleanCaches:s=!1},c)=>{logger$1.debug`received request ${`fetchComputedModel`} for project ${i}`,s&&(logger$1.debug`cleanCaches: ${s}`,i?await o.ProjectsManager.rebuildProject(i):await o.WorkspaceManager.rebuildAll());let l=await a.ModelBuilder.computeModel(i,c);return l===LikeC4Model.EMPTY?{model:null}:{model:l.$data}}),i.onNotification(DidChangeSnapshotNotification.type,async({snapshotUri:i})=>{logger$1.debug`received notification ${`onDidChangeSnapshot`} for snapshot ${i}`,o.ManualLayouts.clearCaches(),await o.ProjectsManager.rebuildProject(o.ProjectsManager.ownerProjectId(i))}),i.onRequest(FetchLayoutedModel.req,async({projectId:i},o)=>{logger$1.debug`received request ${`fetchLayoutedModel`} for project ${i}`;let s=await a.LanguageServices.layoutedModel(i);if(s===null)return{model:null};let c=await a.Views.diagrams(i,o);return{model:{...s.$data,_stage:`layouted`,views:t$6(c,i=>i.id)}}}),i.onRequest(LayoutView.req,async({viewId:i,projectId:o,layoutType:s},c)=>(logger$1.debug`received request ${`layoutView`} for ${i} from project ${o} (layout type: ${s??`not set`})`,{result:await a.Views.layoutView({viewId:i,projectId:o,layoutType:s,cancelToken:c})})),i.onRequest(ValidateLayout.req,async({projectId:i},o)=>(logger$1.debug`received request ${`validateLayout`} for project ${i}`,{result:p((await a.Views.layoutAllViews(i,o)).map(i=>i.diagram))})),i.onRequest(FetchProjects.req,async()=>(logger$1.debug`received request ${`FetchProjects`}`,{projects:t$20(s.groupedByProject(),(i,a)=>{let{folderUri:s,config:{name:c,title:l}}=o.ProjectsManager.getProject(a);return{folder:s.toString(),config:{name:c,title:l},docs:t(i,i=>i.uri.toString())}})})),i.onRequest(ReloadProjects.req,async i=>{logger$1.debug`received request ${`ReloadProjects`}`,o.ManualLayouts.clearCaches(),await o.ProjectsManager.reloadProjects(i)}),i.onRequest(RegisterProject.req,async(i,a)=>{logger$1.debug`received request ${`RegisterProject`}`,o.ManualLayouts.clearCaches();let s;return s=`configUri`in i?await o.ProjectsManager.registerConfigFile(URI.parse(i.configUri),a):await o.ProjectsManager.registerProject(i,a),{id:s.id}}),i.onRequest(FetchViewsFromAllProjects.req,async i=>{logger$1.debug`received request ${`FetchViewsFromAllProjects`}`;let s=[];for(let c of o.ProjectsManager.all){await interruptAndCheck(i);try{let o=await a.Views.computedViews(c,i);s.push(...t$3(o,t(i=>({id:i.id,title:i.title??i.id,projectId:c})),t$9((i,a)=>i.id===`index`?-1:a.id===`index`?1:i.title.localeCompare(a.title))))}catch(i){logger$1.warn(`Failed to fetch views for project ${c}:`,{error:i})}}return{views:s}}),i.onRequest(BuildDocuments.req,async({docs:a},o)=>{let l=a.map(i=>URI.parse(i)),d=i=>!l.some(a=>UriUtils.equals(a,i)),p=s.userDocuments.map(i=>i.uri).filter(d).toArray();logger$1.debug(`[ServerRpc] received request to build:
|
|
66
|
+
changed (total ${l.length}):${a.map(i=>`
|
|
67
|
+
- `+i).join(``)}
|
|
68
|
+
deleted (total ${p.length}):${p.map(i=>`
|
|
69
|
+
- `+i.toString()).join(`
|
|
70
|
+
`)}`),!f&&l.length+p.length>0&&await Promise.allSettled([...l,...p].map(async a=>{let o=a.toString();logger$1.debug(`clear diagnostics for ${o}`);try{await i.sendDiagnostics({uri:o,diagnostics:[]})}catch(i){logger$1.warn(`error clearing diagnostics for ${o}: ${i}`)}})),f=!1,await interruptAndCheck(o),await c.update(l,p,o)}),i.onRequest(Locate.req,i=>{switch(logger$1.debug`received request ${`locate`}, ${i}`,!0){case`element`in i:return a.ModelLocator.locateElement(i.element,i.projectId);case`relation`in i:return a.ModelLocator.locateRelation(i.relation,i.projectId);case`astPath`in i:return a.ModelLocator.locateDynamicViewStep({view:i.view,astPath:i.astPath,projectId:i.projectId});case`view`in i:return a.ModelLocator.locateView(i.view,i.projectId);case`deployment`in i:return a.ModelLocator.locateDeploymentElement(i.deployment,i.projectId);default:nonexhaustive(i)}}),i.onRequest(ChangeView.req,async(i,s)=>{logger$1.debug`received request ${`changeView`} of ${i.viewId} from project ${i.projectId}`;let c=await a.ModelChanges.applyChange(i),l=i.change.op;return i.projectId&&(l===`save-view-snapshot`||l===`reset-manual-layout`)&&await o.ProjectsManager.rebuildProject(i.projectId,s),c}),i.onRequest(FetchTelemetryMetrics.req,async i=>{let s=null;for(let c of o.ProjectsManager.all)try{let o=await a.ModelBuilder.computeModel(c,i);if(o===LikeC4Model.EMPTY)continue;s??={elementKinds:0,deploymentKinds:0,relationshipKinds:0,tags:0,customColors:0,elements:0,deploymentNodes:0,relationships:0,views:0,projects:0},s.elementKinds+=t$21(o.specification.elements).length,s.deploymentKinds+=t$21(o.specification.deployments).length,s.relationshipKinds+=t$21(o.specification.relationships).length,s.tags+=t$21(o.specification.tags).length,s.customColors+=t$21(o.specification.customColors??{}).length,s.elements+=t$21(o.$data.elements).length,s.deploymentNodes+=[...o.deployment.nodes()].length,s.relationships+=t$21(o.$data.relations).length,s.views+=t$21(o.$data.views).length,s.projects+=1}catch(i){logger$1.warn(`Error fetching telemetry metrics for project ${c}`,{err:i})}return await interruptAndCheck(i),{metrics:s}}),i.onRequest(GetDocumentTags.req,async({documentUri:i},s)=>{let c=URI.parse(i);logger$1.debug`received request ${`GetDocumentTags`} for document ${c}`;let l=await a.ModelLocator.locateDocumentTags(c,s);return{projectId:o.ProjectsManager.ownerProjectId(c),tags:l??[]}}),i.onRequest(FetchProjectsOverview.req,async i=>(logger$1.debug`received request ${`FetchProjectsOverview`}`,{projectsView:await a.LanguageServices.projectsOverview(i)})),Disposable.create(()=>{l.cancel()}));function p(i){return t$3(i,n$2(i=>!!i.hasLayoutDrift),t(i=>{let o=a.ModelLocator.locateView(i.id);return invariant(o,`View ${i.id} not found`),{uri:o.uri,viewId:i.id,severity:import_main$1.DiagnosticSeverity.Warning,message:`Layout drift detected for view '${i.id}'`,range:o.range}}))}});async openView(i){let a=this.services.shared.lsp.Connection;if(!a){logger$1.warn(`No LSP connection`);return}await a.sendNotification(DidRequestOpenViewNotification.type,i)}};init_main();var NodeKindProvider=class{constructor(i){this.services=i}getSymbolKind(i){let a=isAstNode(i)?i.$type:i.type,o=(...i)=>i.some(i=>this.services.AstReflection.isSubtype(a,i));switch(!0){case o(Element,ExtendElement,DeploymentNode,DeployedInstance,Imported):return SymbolKind.Constructor;case o(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return SymbolKind.Namespace;case o(LikeC4View):return SymbolKind.Class;case o(`Tag`,LibIcon,CustomColor,SpecificationTag):return SymbolKind.EnumMember;case o(RelationshipKind,SpecificationRelationshipKind):return SymbolKind.Event;case o(ElementKind,DeploymentNodeKind,SpecificationElementKind,SpecificationDeploymentNodeKind):return SymbolKind.TypeParameter}return SymbolKind.Field}getCompletionItemKind(i){let a=isAstNode(i)?i.$type:i.type,o=(...i)=>i.some(i=>this.services.AstReflection.isSubtype(a,i));switch(!0){case o(CustomColor):return CompletionItemKind.Color;case o(Element,DeploymentNode,DeployedInstance,ExtendElement,Imported):return CompletionItemKind.Constructor;case o(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return CompletionItemKind.Module;case o(LikeC4View):return CompletionItemKind.Class;case o(`Tag`,LibIcon,CustomColor,SpecificationTag):return CompletionItemKind.EnumMember;case o(RelationshipKind,SpecificationRelationshipKind):return CompletionItemKind.Event;case o(ElementKind,SpecificationElementKind,DeploymentNodeKind,SpecificationDeploymentNodeKind):return CompletionItemKind.TypeParameter;default:return CompletionItemKind.Reference}}},WorkspaceSymbolProvider=class extends DefaultWorkspaceSymbolProvider{};const viewsLogger=logger$16.getChild(`views`);var DefaultLikeC4Views=class{cache=new WeakMap;viewsWithReportedErrors=new Set;ModelBuilder;constructor(i){this.services=i,this.ModelBuilder=i.likec4.ModelBuilder,i.shared.workspace.WorkspaceManager.onForceCleanCache(()=>{this.cache=new WeakMap})}get layouter(){return this.services.likec4.Layouter}async computedViews(i,a){return t$12((await this.ModelBuilder.computeModel(i,a)).$data.views)}async _layoutAllViews(i,a){let o=t$12(i.$data.views);if(o.length===0)return[];let s=performanceMark(),c=i.project.id,l=viewsLogger.getChild(c);l.debug`layoutAll: ${o.length} views`;let d=[],f=i.$styles,p=[];for(let i of o){let a=this.cache.get(i);if(a){l.debug`layout ${i.id} from cache`,p.push(a);continue}d.push({view:i,styles:f})}return d.length>0&&await this.layouter.batchLayout({batch:d,cancelToken:a,onSuccess:(a,o)=>{p.push(this.viewSucceed(a.view,i,o))},onError:(i,a)=>{l.warn(`Fail layout view ${i.view.id}`,{error:a})}}),a&&a.isCancellationRequested&&await interruptAndCheck(a),p.length===o.length?p.length>0&&l.debug`layouted all ${p.length} views in ${s.pretty}`:l.warn`layouted ${p.length} of ${o.length} views in ${s.pretty}`,p}async layoutAllViews(i,a){let o=await this.ModelBuilder.computeModel(i,a);return await this._layoutAllViews(o,a)}async layoutView({viewId:i,layoutType:a,projectId:o,cancelToken:s}){let c=await this.ModelBuilder.computeModel(o,s),l=c.findView(i)?.$view;o=c.project.id;let d=viewsLogger.getChild(o);if(!l){d.warn`layoutView ${i} not found`;let a=c.findManualLayout(i);if(a){d.debug`found manual layout for ${i}`;let o={...a};return o.drifts=[`not-exists`],o._layout=`manual`,{diagram:o,dot:`# manual layout`}}return null}try{let o=performanceMark(),s=this.cache.get(l)??await this.layouter.layout({view:l,styles:c.$styles});return this.cache.has(l)?d.debug`layout ${i} from cache`:(this.viewSucceed(l,c,s),d.debug(`layout {viewId} in ${o.pretty}`,{viewId:i})),e$4(a)?{dot:s.dot,diagram:this.withLayoutType(s.diagram,c,a)}:s}catch(i){let a=loggable(i);return d.warn(a),this.reportViewError(l,o,a),Promise.reject(i)}}async diagrams(i,a){let o=await this.ModelBuilder.computeModel(i,a);return(await this._layoutAllViews(o,a)).map(({diagram:i})=>this.withLayoutType(i,o,`manual`))}async viewsAsGraphvizOut(i,a){let o=`All-LayoutedViews-DotWithSvg`,s=this.services.shared.workspace.Cache;if(s.has(o))return await Promise.resolve(s.get(o));let c=await this.ModelBuilder.computeModel(i,a),l=t$12(c.$data.views);if(l.length===0)return[];let d=l.map(async i=>{let{dot:a,svg:o}=await this.layouter.svg({view:i,styles:c.$styles});return{id:i.id,dot:a,svg:o}}),f=[],p=await Promise.allSettled(d);for(let i of p)i.status===`fulfilled`?f.push(i.value):logWarnError(i.reason);return s.set(o,f),f}async openView(i,a){await this.services.Rpc.openView({viewId:i,projectId:a})}async adhocView(i,a){viewsLogger.debug`layouting adhoc view...`;let o=await this.ModelBuilder.computeModel(a),s=computeAdhocView(o,i),{diagram:c}=await this.layouter.layout({view:{...s,hash:``,_type:`element`},styles:o.$styles});return viewsLogger.debug`layouting adhoc view... done`,c}reportViewError(i,a,o){let s=`${a}-${i.id}`;this.cache.delete(i),this.viewsWithReportedErrors.has(s)||(this.services.shared.lsp.Connection?.window.showErrorMessage(`LikeC4: ${o}`),this.viewsWithReportedErrors.add(s))}withLayoutType(i,a,o){if(!o)return i;let s=a.findManualLayout(i.id);return s?o===`manual`?i[_layout]===`manual`?(viewsLogger.error(`View ${i.id} already has manual layout, this should not happen`),i):applyManualLayout(i,s):calcDriftsFromSnapshot(i,s):i}viewSucceed(i,a,o){let s=`${a.project.id}-${i.id}`;return this.viewsWithReportedErrors.delete(s),this.cache.set(i,o),o}};function createLikeC4SharedModule(i){return{lsp:{NodeKindProvider:i=>new NodeKindProvider(i),WorkspaceSymbolProvider:i=>new WorkspaceSymbolProvider(i)},workspace:{Cache:i=>new WorkspaceCache(i,DocumentState.Validated),IndexManager:i=>new IndexManager(i),LangiumDocuments:i=>new LangiumDocuments(i),ProjectsManager:i=>new ProjectsManager(i),WorkspaceManager:i=>new LikeC4WorkspaceManager(i),FileSystemProvider:()=>i.fileSystemProvider(),FileSystemWatcher:a=>i.fileSystemWatcher(a),ManualLayouts:a=>i.manualLayouts(a)}}}function bind(i){return a=>new i(a)}function createLikeC4Module(i){return{documentation:{DocumentationProvider:bind(LikeC4DocumentationProvider)},validation:{DocumentValidator:bind(LikeC4DocumentValidator)},Rpc:bind(Rpc),mcp:{Server:a=>i.mcpServer(a),ServerFactory:a=>i.mcpServerFactory(a)},likec4:{LanguageServices:bind(DefaultLikeC4LanguageServices),Layouter:i=>new QueueGraphvizLayoter({graphviz:new GraphvizWasmAdapter}),Views:bind(DefaultLikeC4Views),DeploymentsIndex:bind(DeploymentsIndex),ModelChanges:bind(LikeC4ModelChanges),FqnIndex:bind(FqnIndex),ModelParser:bind(LikeC4ModelParser),ModelBuilder:bind(DefaultLikeC4ModelBuilder),ModelLocator:bind(LikeC4ModelLocator),LastSeen:bind(LastSeenArtifacts)},lsp:{CompletionProvider:bind(LikeC4CompletionProvider),DocumentHighlightProvider:bind(LikeC4DocumentHighlightProvider),DocumentSymbolProvider:bind(LikeC4DocumentSymbolProvider),SemanticTokenProvider:bind(LikeC4SemanticTokenProvider),HoverProvider:bind(LikeC4HoverProvider),CodeLensProvider:bind(LikeC4CodeLensProvider),DocumentLinkProvider:bind(LikeC4DocumentLinkProvider),Formatter:bind(LikeC4Formatter),CodeActionProvider:bind(LikeC4CodeActionProvider)},workspace:{AstNodeDescriptionProvider:bind(AstNodeDescriptionProvider)},references:{NameProvider:bind(LikeC4NameProvider),ScopeComputation:bind(LikeC4ScopeComputation),ScopeProvider:bind(LikeC4ScopeProvider)},parser:{ValueConverter:bind(LikeC4ValueConverter)}}}function createLanguageServices(i={},a,o,s){let c=createSharedServices(i),l=inject([createDefaultModule({shared:c}),LikeC4GeneratedModule,createLikeC4Module({...NoMCPServer,...NoFileSystem,...NoLikeC4ManualLayouts,...i}),a,o,s].reduce(_merge,{}));return c.ServiceRegistry.register(l),registerValidationChecks(l),i.connection?onNextTick(()=>l.Rpc.init()):c.workspace.ConfigurationProvider.initialized({}),{shared:c,likec4:l}}function createSharedServices(i={}){let a={...NoMCPServer,...NoFileSystem,...NoLikeC4ManualLayouts,...i};return inject(createDefaultSharedModule(a),LikeC4GeneratedSharedModule,createLikeC4SharedModule(a))}function _merge(i,a){if(a){for(let[o,s]of Object.entries(a))if(s!==void 0){let a=i[o];a!==null&&s!==null&&typeof a==`object`&&typeof s==`object`?i[o]=_merge(a,s):i[o]=s}}return i}var import_lib=__toESM(require_lib(),1);const logger=logger$17.getChild(`graphviz-binary`);var GraphvizBinaryAdapter=class{_dotpath;_unflattenpath;constructor(i,a){this._dotpath=i,this._unflattenpath=a}dispose(){}[Symbol.dispose](){}get concurrency(){return Math.max(1,os.cpus().length-2)}get dotpath(){return this._dotpath??memoizeProp$1(this,`_dotpath`,()=>{let i=import_lib.default.sync(`dot`);return logger.debug`Found ${i}`,i})}get unflattenpath(){return this._unflattenpath??memoizeProp$1(this,`_unflattenpath`,()=>{let i=import_lib.default.sync(`unflatten`);return logger.debug`Found ${i}`,i})}async unflatten(i){let a;try{let o=await spawn(this.unflattenpath,[`-l 1`,`-c 3`],{timeout:1e4,stdin:{string:i}});a=o.stdout,e$7(o.stderr)||logger.warn(`Command ${o.command} has stderr:\n`+o.stderr)}catch(i){logger.error(`FAILED GraphvizBinaryAdapter.unflatten`,{error:i}),i instanceof SubprocessError&&!e$7(i.stdout)&&(logger.warn(`Command: '${i.command}' returned result but also failed (exitcode ${i.exitCode}):\n`+i.stderr),a=i.stdout)}return a&&(i=a.replaceAll(/\t\[/g,` [`).replaceAll(/\t/g,` `)),i}async layoutJson(i){let a;try{let o=await spawn(this.dotpath,[`-Tjson`,`-y`],{timeout:1e4,stdin:{string:i}});a=o.stdout,e$7(o.stderr)||logger.warn(`Command ${o.command} has stderr:\n`+o.stderr)}catch(o){if(logger.error(`FAILED GraphvizBinaryAdapter.layoutJson`,{error:o}),logger.warn(`FAILED DOT:
|
|
71
|
+
`+i),o instanceof SubprocessError&&!e$7(o.stdout))logger.warn(`Command: '${o.command}' returned result but also failed (exitcode ${o.exitCode}): "${o.stderr}"`),a=o.stdout;else throw o}return a}async acyclic(i){return Promise.reject(Error(`Method not implemented.`))}async svg(i){let a;try{let o=await spawn(this.dotpath,[`-Tsvg`,`-y`],{timeout:1e4,stdin:{string:i}});a=o.stdout,e$7(o.stderr)||logger.warn(`Command ${o.command} has stderr:\n`+o.stderr)}catch(o){if(logger.error(`FAILED GraphvizBinaryAdapter.svg`,{error:o}),logger.warn(`FAILED DOT:
|
|
72
|
+
`+i),o instanceof SubprocessError&&!e$7(o.stdout))logger.warn(`Command: '${o.command}' returned result but also failed (exitcode ${o.exitCode}):\n`+o.stderr),a=o.stdout;else throw o}return a}};export{getAnsiColorFormatter as _,GraphvizWasmAdapter as a,logger$16 as c,createFromSources as d,handleInitOptions as f,getConsoleStderrSink as g,getConsoleSink as h,QueueGraphvizLayoter as i,NoFileSystem as l,logger$17 as m,createLanguageServices as n,WithFileSystem as o,configureLogger as p,ProjectsManager as r,WithLikeC4ManualLayouts as s,GraphvizBinaryAdapter as t,NoLikeC4ManualLayouts as u,getConsoleFormatter as v,loggable as y};
|