commit 6b177c7e90c0583770d7a37ff111047fe41d5750 Author: Andrei Vavilov - SKIDATA Date: Thu Apr 9 13:39:43 2026 +0200 init commit diff --git a/.air.toml b/.air.toml new file mode 100644 index 0000000..44625c3 --- /dev/null +++ b/.air.toml @@ -0,0 +1,41 @@ +# Auto-generated config file for Air live-reloading tool. +# See https://gowebly.org for more information. + +root = "." +tmp_dir = "tmp" + +[build] +pre_cmd = ["bun run build"] +cmd = "go run github.com/a-h/templ/cmd/templ@latest generate && go build -o ./tmp/gowebly_chi ." +bin = "tmp/gowebly_chi" +include_ext = ["go", "templ", "html", "json", "js", "ts", "css", "scss"] +exclude_dir = [".parcel-cache", "bin", "dist", "node_modules", "static", "tmp", "tests", "vendor"] +exclude_regex = ["_test\\.go", "_templ\\.go"] +exclude_unchanged = false +follow_symlink = false +log = "build-errors-air.log" +poll = false +poll_interval = 500 +delay = 1000 +stop_on_error = true +send_interrupt = false +kill_delay = 500 +rerun = false +rerun_delay = 500 + +[log] +time = false +main_only = false + +[color] +main = "magenta" +watcher = "cyan" +build = "yellow" +runner = "green" + +[misc] +clean_on_exit = true + +[screen] +clear_on_rebuild = true +keep_scroll = true diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..8094a98 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# Auto-generated .dockerignore file. +# See https://gowebly.org for more information. + +# Ignore folders. +.git/ +.github/ +.vscode/ +.idea/ +node_modules/ +bin/ +dist/ +dist-ssr/ +tmp/ +pb_data/ +tests/ + +# Ignore files. +LICENSE +.DS_Store +.dockerignore +.gitignore +.postcssrc +Dockerfile +**/*.templ +**/*_test.go +package.json +*-lock.json +*.lockb +*.config.* +*.yml +*.yaml +*.toml +*.md +*.out diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..998cf3a --- /dev/null +++ b/.gitignore @@ -0,0 +1,57 @@ +# Auto-generated .gitignore file. +# See https://gowebly.org for more information. + +# macOS files. +.DS_Store + +# IDE files. +.idea/ +.vscode/ + +# Go workflow files. +go.work + +# Environment files. +.env + +# Generated folders. +bin/ +dist-ssr/ +dist/ +pb_data/ + +# Node modules. +node_modules/ + +# Vendor folders. +vendor/ + +# Temp folders. +.parcel-cache/ +tmp/ + +# Logs. +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +# Ignore by extensions. +*.exe +*.exe~ +*.dll +*.so +*.dylib +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.local +*.lockb +*.test +*.tmp +*.out \ No newline at end of file diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..9cf97cd --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,129 @@ +# Auto-generated .golangci.yml file. +# See https://gowebly.org for more information. + +# Linters settings. +linters-settings: + tagalign: + order: + - json + - db + - validate + strict: true + + funlen: + lines: 120 + ignore-comments: true + + goconst: + min-len: 3 + min-occurrences: 3 + + gocritic: + enabled-tags: + - diagnostic + - experimental + - opinionated + - performance + - style + + gocyclo: + min-complexity: 15 + + gofmt: + rewrite-rules: + - pattern: 'interface{}' + replacement: 'any' + + gomnd: + checks: + - argument + - case + - condition + - return + ignored-functions: + - byte + + gosec: + exclude-generated: true + excludes: + - G101 + + govet: + check-shadowing: true + + errorlint: + asserts: false + + lll: + line-length: 300 + + misspell: + locale: US + + nolintlint: + allow-unused: false # report any unused nolint directives + require-explanation: false # don't require an explanation for nolint directives + require-specific: false # don't require nolint directives to be specific about which linter is being skipped + + revive: + rules: + - name: unexported-return + disabled: true + - name: unused-parameter + +# Linters to enable. +linters: + disable-all: true + + enable: + - bodyclose + - dogsled + - dupl + - errcheck + - errorlint + - exportloopref + - funlen + - gocheckcompilerdirectives + - gochecknoinits + - goconst + - gocritic + - gocyclo + - gofmt + - goimports + - gomnd + - goprintffuncname + - gosec + - gosimple + - govet + - ineffassign + - lll + - misspell + - nakedret + - noctx + - nolintlint + - nilerr + - nilnil + - revive + - staticcheck + - stylecheck + - typecheck + - tagalign + - unconvert + - unparam + - unused + - whitespace + +# Issues configuration. +issues: + exclude-rules: + - path: _test\.go + linters: + - gomnd + +# Run configuration. +run: + timeout: 5m + tests: false + + skip-files: + - '.*_templ\\.go$' diff --git a/.postcssrc b/.postcssrc new file mode 100644 index 0000000..e092dc7 --- /dev/null +++ b/.postcssrc @@ -0,0 +1,5 @@ +{ + "plugins": { + "@tailwindcss/postcss": {} + } +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..6cc187a --- /dev/null +++ b/.prettierignore @@ -0,0 +1,8 @@ +# Auto-generated .gitignore file. +# See https://gowebly.org for more information. + +# Ignore static files. +static/ + +# Ignore templates. +templates/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9db7249 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +# Auto-generated Dockerfile file. +# See https://gowebly.org for more information. + +FROM golang:1.26-alpine AS builder + +# Move to working directory (/build). +WORKDIR /build + +# Copy and download dependency using go mod. +COPY go.mod go.sum ./ +RUN go mod download + +# Copy your code into the container. +COPY . . + +# Set necessary environment variables and build your project. +ENV CGO_ENABLED=0 +RUN go build -ldflags="-s -w" -o gowebly_chi + +FROM scratch + +# Copy project's binary and templates from /build to the scratch container. +COPY --from=builder /build/gowebly_chi / + + + +# Set entry point. +ENTRYPOINT ["/gowebly_chi"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..0cb10c0 --- /dev/null +++ b/README.md @@ -0,0 +1,117 @@ +# Your awesome project + +Welcome to the yet another awesome project generated with the Gowebly CLI! 🎉 + +This README file contains all the necessary information about: + +- [Project overview](#project-overview) +- [Folders structure](#folders-structure) +- [Starting your project](#starting-your-project) +- [Developing your project](#developing-your-project) +- [Deploying your project](#deploying-your-project) + +And some words [about the Gowebly CLI](#about-the-gowebly-cli). + +## Project overview + +Backend: + +- Module name in the go.mod file: `github.com/bergbauer888/backgroundoo` +- Go web framework/router: `Chi` +- Server port: `7000` + +Frontend: + +- Package name in the package.json file: `backgroundoo` +- Reactivity library: `htmx with Alpine.js` +- CSS framework: `Tailwind CSS` + +Tools: + +- Air tool to live-reloading: ✓ +- Bun as a frontend runtime: ✓ +- Templ to generate HTML: ✓ +- Config for golangci-lint: ✓ + +## Folders structure + +```console +. +├── assets +│ ├── scripts.js +│ └── styles.scss +├── static +│ ├── images +│ │ └── gowebly.svg +│ ├── apple-touch-icon.png +│ ├── favicon.ico +│ ├── favicon.png +│ ├── favicon.svg +│ ├── manifest-desktop-screenshot.jpeg +│ ├── manifest-mobile-screenshot.jpeg +│ ├── manifest-touch-icon.svg +│ └── manifest.webmanifest +├── templates +│ ├── pages +│ │ └── index.templ +│ └── main.templ +├── .gitignore +├── .dockerignore +├── .prettierignore +├── .air.toml +├── golangci.yml +├── Dockerfile +├── docker-compose.yml +├── prettier.config.js +├── package.json +├── go.mod +├── go.sum +├── handlers.go +├── server.go +├── main.go +└── README.md +``` + +## Starting your project + +> ❗️ Please make sure that you have installed the executable files for all the necessary tools before starting your project. Exactly: +> +> - `Air`: [https://github.com/air-verse/air](https://github.com/air-verse/air) +> - `Bun`: [https://github.com/oven-sh/bun](https://github.com/oven-sh/bun) +> - `Templ`: [https://github.com/a-h/templ](https://github.com/a-h/templ) +> - `golangci-lint`: [https://github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) + +To start your project, run the **Gowebly** CLI command in your terminal: + +```console +gowebly run +``` + +## Developing your project + +The backend part is located in the `*.go` files in your project folder. + +The `./templates` folder contains Templ templates that you can use in your frontend part. Also, the `./assets` folder contains the `styles.scss` (main styles) and `scripts.js` (main scripts) files. + +The `./static` folder contains all the static files: icons, images, PWA (Progressive Web App) manifest and other builded/minified assets. + +## Deploying your project + +All deploy settings are located in the `Dockerfile` and `docker-compose.yml` files in your project folder. + +To deploy your project to a remote server, follow these steps: + +1. Go to your hosting/cloud provider and create a new VDS/VPS. +2. Update all OS packages on the server and install Docker, Docker Compose and Git packages. +3. Use `git clone` command to clone the repository with your project to the server and navigate to its folder. +4. Run the `docker-compose up` command to start your project on your server. + +> ❗️ Don't forget to generate Go files from `*.templ` templates before run the `docker-compose up` command. + +## About the Gowebly CLI + +The [**Gowebly**](https://github.com/gowebly/gowebly) CLI is a next-generation CLI tool that makes it easy to create amazing web applications with **Go** on the backend, using **htmx**, **hyperscript** or **Alpine.js**, and the most popular **CSS frameworks** on the frontend. + +It's highly recommended to start exploring the Gowebly CLI with short articles "[**What is Gowebly CLI?**](https://gowebly.org/getting-started)" and "[**How does it work?**](https://gowebly.org/getting-started/how-does-it-work)" to understand the basic principle and the main components built into the **Gowebly** CLI. + +another awesome project built with the Gowebly CLI diff --git a/assets/scripts.js b/assets/scripts.js new file mode 100644 index 0000000..2861965 --- /dev/null +++ b/assets/scripts.js @@ -0,0 +1,9 @@ +import 'htmx.org' + +import Alpine from 'alpinejs' + +// Add Alpine instance to window object. +window.Alpine = Alpine + +// Start Alpine. +Alpine.start() diff --git a/assets/styles.css b/assets/styles.css new file mode 100644 index 0000000..0f92859 --- /dev/null +++ b/assets/styles.css @@ -0,0 +1,98 @@ +@import 'tailwindcss' source('../templates'); +@plugin '@tailwindcss/forms'; +@plugin '@tailwindcss/typography'; + +/* User styles */ + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + color: #242424; + background-color: #fefef5; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; + color: #242424; + background-color: #fefef5; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +#htmx-result { + padding: 2rem 0; +} + +.logo { + height: 12em; + padding: 2em; + display: inline; + will-change: filter; + transition: filter 300ms; + filter: drop-shadow(0 0 2em #f3c077aa); +} + +.content { + padding: 2em; +} + +.read-the-docs { + color: #888888; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + color: #fefef5; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} + +button:hover { + border-color: #646cff; +} + +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +/* Alpine.js styles */ + +[x-cloak] { + display: none !important; +} diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..ea60ac6 --- /dev/null +++ b/bun.lock @@ -0,0 +1,462 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "backgroundoo", + "dependencies": { + "alpinejs": "latest", + "htmx.org": "latest", + "tailwindcss": "latest", + }, + "devDependencies": { + "@parcel/transformer-css": "latest", + "@tailwindcss/forms": "latest", + "@tailwindcss/postcss": "latest", + "@tailwindcss/typography": "latest", + "parcel": "latest", + "postcss": "latest", + "prettier": "latest", + }, + }, + }, + "packages": { + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@lezer/common": ["@lezer/common@1.5.2", "", {}, "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ=="], + + "@lezer/lr": ["@lezer/lr@1.4.8", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA=="], + + "@lmdb/lmdb-darwin-arm64": ["@lmdb/lmdb-darwin-arm64@2.8.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw=="], + + "@lmdb/lmdb-darwin-x64": ["@lmdb/lmdb-darwin-x64@2.8.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug=="], + + "@lmdb/lmdb-linux-arm": ["@lmdb/lmdb-linux-arm@2.8.5", "", { "os": "linux", "cpu": "arm" }, "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg=="], + + "@lmdb/lmdb-linux-arm64": ["@lmdb/lmdb-linux-arm64@2.8.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww=="], + + "@lmdb/lmdb-linux-x64": ["@lmdb/lmdb-linux-x64@2.8.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ=="], + + "@lmdb/lmdb-win32-x64": ["@lmdb/lmdb-win32-x64@2.8.5", "", { "os": "win32", "cpu": "x64" }, "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ=="], + + "@mischnic/json-sourcemap": ["@mischnic/json-sourcemap@0.1.1", "", { "dependencies": { "@lezer/common": "^1.0.0", "@lezer/lr": "^1.0.0", "json5": "^2.2.1" } }, "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w=="], + + "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="], + + "@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw=="], + + "@msgpackr-extract/msgpackr-extract-linux-arm": ["@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3", "", { "os": "linux", "cpu": "arm" }, "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw=="], + + "@msgpackr-extract/msgpackr-extract-linux-arm64": ["@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg=="], + + "@msgpackr-extract/msgpackr-extract-linux-x64": ["@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg=="], + + "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="], + + "@parcel/bundler-default": ["@parcel/bundler-default@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/graph": "3.6.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4", "nullthrows": "^1.1.1" } }, "sha512-Nb8peNvhfm1+660CLwssWh4weY+Mv6vEGS6GPKqzJmTMw50udi0eS1YuWFzvmhSiu1KsYcUD37mqQ1LuIDtWoA=="], + + "@parcel/cache": ["@parcel/cache@2.16.4", "", { "dependencies": { "@parcel/fs": "2.16.4", "@parcel/logger": "2.16.4", "@parcel/utils": "2.16.4", "lmdb": "2.8.5" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-+uCyeElSga2MBbmbXpIj/WVKH7TByCrKaxtHbelfKKIJpYMgEHVjO4cuc7GUfTrUAmRUS8ZGvnX7Etgq6/jQhw=="], + + "@parcel/codeframe": ["@parcel/codeframe@2.16.4", "", { "dependencies": { "chalk": "^4.1.2" } }, "sha512-s64aMfOJoPrXhKH+Y98ahX0O8aXWvTR+uNlOaX4yFkpr4FFDnviLcGngDe/Yo4Qq2FJZ0P6dNswbJTUH9EGxkQ=="], + + "@parcel/compressor-raw": ["@parcel/compressor-raw@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4" } }, "sha512-IK8IpNhw61B2HKgA1JhGhO9y+ZJFRZNTEmvhN1NdLdPqvgEXm2EunT+m6D9z7xeoeT6XnUKqM0eRckEdD0OXbA=="], + + "@parcel/config-default": ["@parcel/config-default@2.16.4", "", { "dependencies": { "@parcel/bundler-default": "2.16.4", "@parcel/compressor-raw": "2.16.4", "@parcel/namer-default": "2.16.4", "@parcel/optimizer-css": "2.16.4", "@parcel/optimizer-html": "2.16.4", "@parcel/optimizer-image": "2.16.4", "@parcel/optimizer-svg": "2.16.4", "@parcel/optimizer-swc": "2.16.4", "@parcel/packager-css": "2.16.4", "@parcel/packager-html": "2.16.4", "@parcel/packager-js": "2.16.4", "@parcel/packager-raw": "2.16.4", "@parcel/packager-svg": "2.16.4", "@parcel/packager-wasm": "2.16.4", "@parcel/reporter-dev-server": "2.16.4", "@parcel/resolver-default": "2.16.4", "@parcel/runtime-browser-hmr": "2.16.4", "@parcel/runtime-js": "2.16.4", "@parcel/runtime-rsc": "2.16.4", "@parcel/runtime-service-worker": "2.16.4", "@parcel/transformer-babel": "2.16.4", "@parcel/transformer-css": "2.16.4", "@parcel/transformer-html": "2.16.4", "@parcel/transformer-image": "2.16.4", "@parcel/transformer-js": "2.16.4", "@parcel/transformer-json": "2.16.4", "@parcel/transformer-node": "2.16.4", "@parcel/transformer-postcss": "2.16.4", "@parcel/transformer-posthtml": "2.16.4", "@parcel/transformer-raw": "2.16.4", "@parcel/transformer-react-refresh-wrap": "2.16.4", "@parcel/transformer-svg": "2.16.4" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-kBxuTY/5trEVnvXk92l7LVkYjNuz3SaqWymFhPjEnc8GY4ZVdcWrWdXWTB9hUhpmRYJctFCyGvM0nN05JTiM2g=="], + + "@parcel/core": ["@parcel/core@2.16.4", "", { "dependencies": { "@mischnic/json-sourcemap": "^0.1.1", "@parcel/cache": "2.16.4", "@parcel/diagnostic": "2.16.4", "@parcel/events": "2.16.4", "@parcel/feature-flags": "2.16.4", "@parcel/fs": "2.16.4", "@parcel/graph": "3.6.4", "@parcel/logger": "2.16.4", "@parcel/package-manager": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/profiler": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/types": "2.16.4", "@parcel/utils": "2.16.4", "@parcel/workers": "2.16.4", "base-x": "^3.0.11", "browserslist": "^4.24.5", "clone": "^2.1.2", "dotenv": "^16.5.0", "dotenv-expand": "^11.0.7", "json5": "^2.2.3", "msgpackr": "^1.11.2", "nullthrows": "^1.1.1", "semver": "^7.7.1" } }, "sha512-a0CgrW5A5kwuSu5J1RFRoMQaMs9yagvfH2jJMYVw56+/7NRI4KOtu612SG9Y1ERWfY55ZwzyFxtLWvD6LO+Anw=="], + + "@parcel/diagnostic": ["@parcel/diagnostic@2.16.4", "", { "dependencies": { "@mischnic/json-sourcemap": "^0.1.1", "nullthrows": "^1.1.1" } }, "sha512-YN5CfX7lFd6yRLxyZT4Sj3sR6t7nnve4TdXSIqapXzQwL7Bw+sj79D95wTq2rCm3mzk5SofGxFAXul2/nG6gcQ=="], + + "@parcel/error-overlay": ["@parcel/error-overlay@2.16.4", "", {}, "sha512-e8KYKnMsfmQnqIhsUWBUZAXlDK30wkxsAGle1tZ0gOdoplaIdVq/WjGPatHLf6igLM76c3tRn2vw8jZFput0jw=="], + + "@parcel/events": ["@parcel/events@2.16.4", "", {}, "sha512-slWQkBRAA7o0cN0BLEd+yCckPmlVRVhBZn5Pn6ktm4EzEtrqoMzMeJOxxH8TXaRzrQDYnTcnYIHFgXWd4kkUfg=="], + + "@parcel/feature-flags": ["@parcel/feature-flags@2.16.4", "", {}, "sha512-nYdx53siKPLYikHHxfzgjzzgxdrjquK6DMnuSgOTyIdRG4VHdEN0+NqKijRLuVgiUFo/dtxc2h+amwqFENMw8w=="], + + "@parcel/fs": ["@parcel/fs@2.16.4", "", { "dependencies": { "@parcel/feature-flags": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/types-internal": "2.16.4", "@parcel/utils": "2.16.4", "@parcel/watcher": "^2.0.7", "@parcel/workers": "2.16.4" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-maCMOiVn7oJYZlqlfxgLne8n6tSktIT1k0AeyBp4UGWCXyeJUJ+nL7QYShFpKNLtMLeF0cEtgwRAknWzbcDS1g=="], + + "@parcel/graph": ["@parcel/graph@3.6.4", "", { "dependencies": { "@parcel/feature-flags": "2.16.4", "nullthrows": "^1.1.1" } }, "sha512-Cj9yV+/k88kFhE+D+gz0YuNRpvNOCVDskO9pFqkcQhGbsGq6kg2XpZ9V7HlYraih31xf8Vb589bZOwjKIiHixQ=="], + + "@parcel/logger": ["@parcel/logger@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/events": "2.16.4" } }, "sha512-QR8QLlKo7xAy9JBpPDAh0RvluaixqPCeyY7Fvo2K7hrU3r85vBNNi06pHiPbWoDmB4x1+QoFwMaGnJOHR+/fMA=="], + + "@parcel/markdown-ansi": ["@parcel/markdown-ansi@2.16.4", "", { "dependencies": { "chalk": "^4.1.2" } }, "sha512-0+oQApAVF3wMcQ6d1ZfZ0JsRzaMUYj9e4U+naj6YEsFsFGOPp+pQYKXBf1bobQeeB7cPKPT3SUHxFqced722Hw=="], + + "@parcel/namer-default": ["@parcel/namer-default@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "nullthrows": "^1.1.1" } }, "sha512-CE+0lFg881sJq575EXxj2lKUn81tsS5itpNUUErHxit195m3PExyAhoXM6ed/SXxwi+uv+T5FS/jjDLBNuUFDA=="], + + "@parcel/node-resolver-core": ["@parcel/node-resolver-core@3.7.4", "", { "dependencies": { "@mischnic/json-sourcemap": "^0.1.1", "@parcel/diagnostic": "2.16.4", "@parcel/fs": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4", "nullthrows": "^1.1.1", "semver": "^7.7.1" } }, "sha512-b3VDG+um6IWW5CTod6M9hQsTX5mdIelKmam7mzxzgqg4j5hnycgTWqPMc9UxhYoUY/Q/PHfWepccNcKtvP5JiA=="], + + "@parcel/optimizer-css": ["@parcel/optimizer-css@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4", "browserslist": "^4.24.5", "lightningcss": "^1.30.1", "nullthrows": "^1.1.1" } }, "sha512-aqdXCtmvpcXYgJFGk2DtXF34wuM2TD1fZorKMrJdKB9sSkWVRs1tq6RAXQrbi0ZPDH9wfE/9An3YdkTex7RHuQ=="], + + "@parcel/optimizer-html": ["@parcel/optimizer-html@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4" } }, "sha512-vg/R2uuSni+NYYUUV8m+5bz8p5zBv8wc/nNleoBnGuCDwn7uaUwTZ8Gt9CjZO8jjG0xCLILoc/TW+e2FF3pfgQ=="], + + "@parcel/optimizer-image": ["@parcel/optimizer-image@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4", "@parcel/workers": "2.16.4" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-2RV54WnvMYr18lxSx7Zlx/DXpJwMzOiPxDnoFyvaUoYutvgHO6chtcgFgh1Bvw/PoI95vYzlTkZ8QfUOk5A0JA=="], + + "@parcel/optimizer-svg": ["@parcel/optimizer-svg@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4" } }, "sha512-22+BqIffCrVErg8y2XwhasbTaFNn75OKXZ3KTDBIfOSAZKLUKs1iHfDXETzTRN7cVcS+Q36/6EHd7N/RA8i1fg=="], + + "@parcel/optimizer-swc": ["@parcel/optimizer-swc@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4", "@swc/core": "^1.11.24", "nullthrows": "^1.1.1" } }, "sha512-+URqwnB6u1gqaLbG1O1DDApH+UVj4WCbK9No1fdxLBxQ9a84jyli25o1kK1hYB9Nb/JMyYNnEBfvYUW6RphOxw=="], + + "@parcel/package-manager": ["@parcel/package-manager@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/fs": "2.16.4", "@parcel/logger": "2.16.4", "@parcel/node-resolver-core": "3.7.4", "@parcel/types": "2.16.4", "@parcel/utils": "2.16.4", "@parcel/workers": "2.16.4", "@swc/core": "^1.11.24", "semver": "^7.7.1" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-obWv9gZgdnkT3Kd+fBkKjhdNEY7zfOP5gVaox5i4nQstVCaVnDlMv5FwLEXwehL+WbwEcGyEGGxOHHkAFKk7Cg=="], + + "@parcel/packager-css": ["@parcel/packager-css@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4", "lightningcss": "^1.30.1", "nullthrows": "^1.1.1" } }, "sha512-rWRtfiX+VVIOZvq64jpeNUKkvWAbnokfHQsk/js1s5jD4ViNQgPcNLiRaiIANjymqL6+dQqWvGUSW2a5FAZYfg=="], + + "@parcel/packager-html": ["@parcel/packager-html@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/types": "2.16.4", "@parcel/utils": "2.16.4" } }, "sha512-AWo5f6SSqBsg2uWOsX0gPX8hCx2iE6GYLg2Z4/cDy2mPlwDICN8/bxItEztSZFmObi+ti26eetBKRDxAUivyIQ=="], + + "@parcel/packager-js": ["@parcel/packager-js@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/types": "2.16.4", "@parcel/utils": "2.16.4", "globals": "^13.24.0", "nullthrows": "^1.1.1" } }, "sha512-L2o39f/fhta+hxto7w8OTUKdstY+te5BmHZREckbQm0KTBg93BG7jB0bfoxLSZF0d8uuAYIVXjzeHNqha+du1g=="], + + "@parcel/packager-raw": ["@parcel/packager-raw@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4" } }, "sha512-A9j60G9OmbTkEeE4WRMXCiErEprHLs9NkUlC4HXCxmSrPMOVaMaMva2LdejE3A9kujZqYtYfuc8+a+jN+Nro4w=="], + + "@parcel/packager-svg": ["@parcel/packager-svg@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/types": "2.16.4", "@parcel/utils": "2.16.4" } }, "sha512-LT9l7eInFrAZJ6w3mYzAUgDq3SIzYbbQyW46Dz26M9lJQbf6uCaATUTac3BEHegW0ikDuw4OOGHK41BVqeeusg=="], + + "@parcel/packager-wasm": ["@parcel/packager-wasm@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4" } }, "sha512-AY96Aqu/RpmaSZK2RGkIrZWjAperDw8DAlxLAiaP1D/RPVnikZtl5BmcUt/Wz3PrzG7/q9ZVqqKkWsLmhkjXZQ=="], + + "@parcel/plugin": ["@parcel/plugin@2.16.4", "", { "dependencies": { "@parcel/types": "2.16.4" } }, "sha512-aN2VQoRGC1eB41ZCDbPR/Sp0yKOxe31oemzPx1nJzOuebK2Q6FxSrJ9Bjj9j/YCaLzDtPwelsuLOazzVpXJ6qg=="], + + "@parcel/profiler": ["@parcel/profiler@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/events": "2.16.4", "@parcel/types-internal": "2.16.4", "chrome-trace-event": "^1.0.2" } }, "sha512-R3JhfcnoReTv2sVFHPR2xKZvs3d3IRrBl9sWmAftbIJFwT4rU70/W7IdwfaJVkD/6PzHq9mcgOh1WKL4KAxPdA=="], + + "@parcel/reporter-cli": ["@parcel/reporter-cli@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/types": "2.16.4", "@parcel/utils": "2.16.4", "chalk": "^4.1.2", "term-size": "^2.2.1" } }, "sha512-DQx9TwcTZrDv828+tcwEi//xyW7OHTGzGX1+UEVxPp0mSzuOmDn0zfER8qNIqGr1i4D/FXhb5UJQDhGHV8mOpQ=="], + + "@parcel/reporter-dev-server": ["@parcel/reporter-dev-server@2.16.4", "", { "dependencies": { "@parcel/codeframe": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4" } }, "sha512-YWvay25htQDifpDRJ0+yFh6xUxKnbfeJxYkPYyuXdxpEUhq4T0UWW0PbPCN/wFX7StgeUTXq5Poeo/+eys9m3w=="], + + "@parcel/reporter-tracer": ["@parcel/reporter-tracer@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4", "chrome-trace-event": "^1.0.3", "nullthrows": "^1.1.1" } }, "sha512-JKnlXpPepak0/ZybmZn9JtyjJiDBWYrt7ZUlXQhQb0xzNcd/k+RqfwVkTKIwyFHsWtym0cwibkvsi2bWFzS7tw=="], + + "@parcel/resolver-default": ["@parcel/resolver-default@2.16.4", "", { "dependencies": { "@parcel/node-resolver-core": "3.7.4", "@parcel/plugin": "2.16.4" } }, "sha512-wJe9XQS0hn/t32pntQpJbls3ZL8mGVVhK9L7s7BTmZT9ufnvP2nif1psJz/nbgnP9LF6mLSk43OdMJKpoStsjQ=="], + + "@parcel/runtime-browser-hmr": ["@parcel/runtime-browser-hmr@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4" } }, "sha512-asx7p3NjUSfibI3bC7+8+jUIGHWVk2Zuq9SjJGCGDt+auT9A4uSGljnsk1BWWPqqZ0WILubq4czSAqm0+wt4cw=="], + + "@parcel/runtime-js": ["@parcel/runtime-js@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4", "nullthrows": "^1.1.1" } }, "sha512-gUKmsjg+PULQBu2QbX0QKll9tXSqHPO8NrfxHwWb2lz5xDKDos1oV0I7BoMWbHhUHkoToXZrm654oGViujtVUA=="], + + "@parcel/runtime-rsc": ["@parcel/runtime-rsc@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4", "nullthrows": "^1.1.1" } }, "sha512-CHkotYE/cNiUjJmrc5FD9YhlFp1UF5wMNNJmoWaL40eBzsqcaV0sSn5V3bNapwewn3wrMYgdPgvOTHfaZaG73A=="], + + "@parcel/runtime-service-worker": ["@parcel/runtime-service-worker@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4", "nullthrows": "^1.1.1" } }, "sha512-FT0Q58bf5Re+dq5cL2XHbxqHHFZco6qtRijeVpT3TSPMRPlniMArypSytTeZzVNL7h/hxjWsNu7fRuC0yLB5hA=="], + + "@parcel/rust": ["@parcel/rust@2.16.4", "", { "optionalDependencies": { "@parcel/rust-darwin-arm64": "2.16.4", "@parcel/rust-darwin-x64": "2.16.4", "@parcel/rust-linux-arm-gnueabihf": "2.16.4", "@parcel/rust-linux-arm64-gnu": "2.16.4", "@parcel/rust-linux-arm64-musl": "2.16.4", "@parcel/rust-linux-x64-gnu": "2.16.4", "@parcel/rust-linux-x64-musl": "2.16.4", "@parcel/rust-win32-x64-msvc": "2.16.4" }, "peerDependencies": { "napi-wasm": "^1.1.2" }, "optionalPeers": ["napi-wasm"] }, "sha512-RBMKt9rCdv6jr4vXG6LmHtxzO5TuhQvXo1kSoSIF7fURRZ81D1jzBtLxwLmfxCPsofJNqWwdhy5vIvisX+TLlQ=="], + + "@parcel/rust-darwin-arm64": ["@parcel/rust-darwin-arm64@2.16.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-P3Se36H9EO1fOlwXqQNQ+RsVKTGn5ztRSUGbLcT8ba6oOMmU1w7J4R810GgsCbwCuF10TJNUMkuD3Q2Sz15Q3Q=="], + + "@parcel/rust-darwin-x64": ["@parcel/rust-darwin-x64@2.16.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-8aNKNyPIx3EthYpmVJevIdHmFsOApXAEYGi3HU69jTxLgSIfyEHDdGE9lEsMvhSrd/SSo4/euAtiV+pqK04wnA=="], + + "@parcel/rust-linux-arm-gnueabihf": ["@parcel/rust-linux-arm-gnueabihf@2.16.4", "", { "os": "linux", "cpu": "arm" }, "sha512-QrvqiSHaWRLc0JBHgUHVvDthfWSkA6AFN+ikV1UGENv4j2r/QgvuwJiG0VHrsL6pH5dRqj0vvngHzEgguke9DA=="], + + "@parcel/rust-linux-arm64-gnu": ["@parcel/rust-linux-arm64-gnu@2.16.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-f3gBWQHLHRUajNZi3SMmDQiEx54RoRbXtZYQNuBQy7+NolfFcgb1ik3QhkT7xovuTF/LBmaqP3UFy0PxvR/iwQ=="], + + "@parcel/rust-linux-arm64-musl": ["@parcel/rust-linux-arm64-musl@2.16.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-cwml18RNKsBwHyZnrZg4jpecXkWjaY/mCArocWUxkFXjjB97L56QWQM9W86f2/Y3HcFcnIGJwx1SDDKJrV6OIA=="], + + "@parcel/rust-linux-x64-gnu": ["@parcel/rust-linux-x64-gnu@2.16.4", "", { "os": "linux", "cpu": "x64" }, "sha512-0xIjQaN8hiG0F9R8coPYidHslDIrbfOS/qFy5GJNbGA3S49h61wZRBMQqa7JFW4+2T8R0J9j0SKHhLXpbLXrIg=="], + + "@parcel/rust-linux-x64-musl": ["@parcel/rust-linux-x64-musl@2.16.4", "", { "os": "linux", "cpu": "x64" }, "sha512-fYn21GIecHK9RoZPKwT9NOwxwl3Gy3RYPR6zvsUi0+hpFo19Ph9EzFXN3lT8Pi5KiwQMCU4rsLb5HoWOBM1FeA=="], + + "@parcel/rust-win32-x64-msvc": ["@parcel/rust-win32-x64-msvc@2.16.4", "", { "os": "win32", "cpu": "x64" }, "sha512-TcpWC3I1mJpfP2++018lgvM7UX0P8IrzNxceBTHUKEIDMwmAYrUKAQFiaU0j1Ldqk6yP8SPZD3cvphumsYpJOQ=="], + + "@parcel/source-map": ["@parcel/source-map@2.1.1", "", { "dependencies": { "detect-libc": "^1.0.3" } }, "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew=="], + + "@parcel/transformer-babel": ["@parcel/transformer-babel@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4", "browserslist": "^4.24.5", "json5": "^2.2.3", "nullthrows": "^1.1.1", "semver": "^7.7.1" } }, "sha512-CMDUOQYX7+cmeyHxHSFnoPcwvXNL7rRFE+Q06uVFzsYYiVhbwGF/1J5Bx4cW3Froumqla4YTytTsEteJEybkdA=="], + + "@parcel/transformer-css": ["@parcel/transformer-css@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4", "browserslist": "^4.24.5", "lightningcss": "^1.30.1", "nullthrows": "^1.1.1" } }, "sha512-VG/+DbDci2HKe20GFRDs65ZQf5GUFfnmZAa1BhVl/MO+ijT3XC3eoVUy5cExRkq4VLcPY4ytL0g/1T2D6x7lBQ=="], + + "@parcel/transformer-html": ["@parcel/transformer-html@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4" } }, "sha512-w6JErYTeNS+KAzUAER18NHFIFFvxiLGd4Fht1UYcb/FDjJdLAMB/FljyEs0Rto/WAhZ2D0MuSL25HQh837R62g=="], + + "@parcel/transformer-image": ["@parcel/transformer-image@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4", "@parcel/workers": "2.16.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-ZzIn3KvvRqMfcect4Dy+57C9XoQXZhpVJKBdQWMp9wM1qJEgsVgGDcaSBYCs/UYSKMRMP6Wm20pKCt408RkQzg=="], + + "@parcel/transformer-js": ["@parcel/transformer-js@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/source-map": "^2.1.1", "@parcel/utils": "2.16.4", "@parcel/workers": "2.16.4", "@swc/helpers": "^0.5.0", "browserslist": "^4.24.5", "nullthrows": "^1.1.1", "regenerator-runtime": "^0.14.1", "semver": "^7.7.1" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-FD2fdO6URwAGBPidb3x1dDgLBt972mko0LelcSU05aC/pcKaV9mbCtINbPul1MlStzkxDelhuImcCYIyerheVQ=="], + + "@parcel/transformer-json": ["@parcel/transformer-json@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "json5": "^2.2.3" } }, "sha512-pB3ZNqgokdkBCJ+4G0BrPYcIkyM9K1HVk0GvjzcLEFDKsoAp8BGEM68FzagFM/nVq9anYTshIaoh349GK0M/bg=="], + + "@parcel/transformer-node": ["@parcel/transformer-node@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4" } }, "sha512-7t43CPGfMJk1LqFokwxHSsRi+kKC2QvDXaMtqiMShmk50LCwn81WgzuFvNhMwf6lSiBihWupGwF3Fqksg+aisg=="], + + "@parcel/transformer-postcss": ["@parcel/transformer-postcss@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/utils": "2.16.4", "clone": "^2.1.2", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", "semver": "^7.7.1" } }, "sha512-jfmh9ho03H+qwz9S1b/a/oaOmgfMovtHKYDweIGMjKULKIee3AFRqo8RZIOuUMjDuqHWK8SqQmjery4syFV3Xw=="], + + "@parcel/transformer-posthtml": ["@parcel/transformer-posthtml@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4" } }, "sha512-+GXsmGx1L25KQGQnwclgEuQe1t4QU+IoDkgN+Ikj+EnQCOWG4/ts2VpMBeqP5F18ZT4cCSRafj6317o/2lSGJg=="], + + "@parcel/transformer-raw": ["@parcel/transformer-raw@2.16.4", "", { "dependencies": { "@parcel/plugin": "2.16.4" } }, "sha512-7WDUPq+bW11G9jKxaQIVL+NPGolV99oq/GXhpjYip0SaGaLzRCW7gEk60cftuk0O7MsDaX5jcAJm3G/AX+LJKg=="], + + "@parcel/transformer-react-refresh-wrap": ["@parcel/transformer-react-refresh-wrap@2.16.4", "", { "dependencies": { "@parcel/error-overlay": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/utils": "2.16.4", "react-refresh": "^0.16.0" } }, "sha512-MiLNZrsGQJTANKKa4lzZyUbGj/en0Hms474mMdQkCBFg6GmjfmXwaMMgtTfPA3ZwSp2+3LeObCyca/f9B2gBZQ=="], + + "@parcel/transformer-svg": ["@parcel/transformer-svg@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/plugin": "2.16.4", "@parcel/rust": "2.16.4" } }, "sha512-0dm4cQr/WpfQP6N0xjFtwdLTxcONDfoLgTOMk4eNUWydHipSgmLtvUk/nOc/FWkwztRScfAObtZXOiPOd3Oy9A=="], + + "@parcel/types": ["@parcel/types@2.16.4", "", { "dependencies": { "@parcel/types-internal": "2.16.4", "@parcel/workers": "2.16.4" } }, "sha512-ctx4mBskZHXeDVHg4OjMwx18jfYH9BzI/7yqbDQVGvd5lyA+/oVVzYdpele2J2i2sSaJ87cA8nb57GDQ8kHAqA=="], + + "@parcel/types-internal": ["@parcel/types-internal@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/feature-flags": "2.16.4", "@parcel/source-map": "^2.1.1", "utility-types": "^3.11.0" } }, "sha512-PE6Qmt5cjzBxX+6MPLiF7r+twoC+V9Skt3zyuBQ+H1c0i9o07Bbz2NKX10nvlPukfmW6Fu/1RvTLkzBZR1bU6A=="], + + "@parcel/utils": ["@parcel/utils@2.16.4", "", { "dependencies": { "@parcel/codeframe": "2.16.4", "@parcel/diagnostic": "2.16.4", "@parcel/logger": "2.16.4", "@parcel/markdown-ansi": "2.16.4", "@parcel/rust": "2.16.4", "@parcel/source-map": "^2.1.1", "chalk": "^4.1.2", "nullthrows": "^1.1.1" } }, "sha512-lkmxQHcHyOWZLbV8t+h2CGZIkPiBurLm/TS5wNT7+tq0qt9KbVwL7FP2K93TbXhLMGTmpI79Bf3qKniPM167Mw=="], + + "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], + + "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], + + "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA=="], + + "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg=="], + + "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng=="], + + "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ=="], + + "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg=="], + + "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA=="], + + "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA=="], + + "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ=="], + + "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg=="], + + "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q=="], + + "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g=="], + + "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.6", "", { "os": "win32", "cpu": "x64" }, "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw=="], + + "@parcel/workers": ["@parcel/workers@2.16.4", "", { "dependencies": { "@parcel/diagnostic": "2.16.4", "@parcel/logger": "2.16.4", "@parcel/profiler": "2.16.4", "@parcel/types-internal": "2.16.4", "@parcel/utils": "2.16.4", "nullthrows": "^1.1.1" }, "peerDependencies": { "@parcel/core": "^2.16.4" } }, "sha512-dkBEWqnHXDZnRbTZouNt4uEGIslJT+V0c8OH1MPOfjISp1ucD6/u9ET8k9d/PxS9h1hL53og0SpBuuSEPLDl6A=="], + + "@swc/core": ["@swc/core@1.15.24", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.26" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.15.24", "@swc/core-darwin-x64": "1.15.24", "@swc/core-linux-arm-gnueabihf": "1.15.24", "@swc/core-linux-arm64-gnu": "1.15.24", "@swc/core-linux-arm64-musl": "1.15.24", "@swc/core-linux-ppc64-gnu": "1.15.24", "@swc/core-linux-s390x-gnu": "1.15.24", "@swc/core-linux-x64-gnu": "1.15.24", "@swc/core-linux-x64-musl": "1.15.24", "@swc/core-win32-arm64-msvc": "1.15.24", "@swc/core-win32-ia32-msvc": "1.15.24", "@swc/core-win32-x64-msvc": "1.15.24" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" }, "optionalPeers": ["@swc/helpers"] }, "sha512-5Hj8aNasue7yusUt8LGCUe/AjM7RMAce8ZoyDyiFwx7Al+GbYKL+yE7g4sJk8vEr1dKIkTRARkNIJENc4CjkBQ=="], + + "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.15.24", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uM5ZGfFXjtvtJ+fe448PVBEbn/CSxS3UAyLj3O9xOqKIWy3S6hPTXSPbszxkSsGDYKi+YFhzAsR4r/eXLxEQ0g=="], + + "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.15.24", "", { "os": "darwin", "cpu": "x64" }, "sha512-fMIb/Zfn929pw25VMBhV7Ji2Dl+lCWtUPNdYJQYOke+00E5fcQ9ynxtP8+qhUo/HZc+mYQb1gJxwHM9vty+lXg=="], + + "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.15.24", "", { "os": "linux", "cpu": "arm" }, "sha512-vOkjsyjjxnoYx3hMEWcGxQrMgnNrRm6WAegBXrN8foHtDAR+zpdhpGF5a4lj1bNPgXAvmysjui8cM1ov/Clkaw=="], + + "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.15.24", "", { "os": "linux", "cpu": "arm64" }, "sha512-h/oNu+upkXJ6Cicnq7YGVj9PkdfarLCdQa8l/FlHYvfv8CEiMaeeTnpLU7gSBH/rGxosM6Qkfa/J9mThGF9CLA=="], + + "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.15.24", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZpF/pRe1guk6sKzQI9D1jAORtjTdNlyeXn9GDz8ophof/w2WhojRblvSDJaGe7rJjcPN8AaOkhwdRUh7q8oYIg=="], + + "@swc/core-linux-ppc64-gnu": ["@swc/core-linux-ppc64-gnu@1.15.24", "", { "os": "linux", "cpu": "ppc64" }, "sha512-QZEsZfisHTSJlmyChgDFNmKPb3W6Lhbfo/O76HhIngfEdnQNmukS38/VSe1feho+xkV5A5hETyCbx3sALBZKAQ=="], + + "@swc/core-linux-s390x-gnu": ["@swc/core-linux-s390x-gnu@1.15.24", "", { "os": "linux", "cpu": "s390x" }, "sha512-DLdJKVsJgglqQrJBuoUYNmzm3leI7kUZhLbZGHv42onfKsGf6JDS3+bzCUQfte/XOqDjh/tmmn1DR/CF/tCJFw=="], + + "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.15.24", "", { "os": "linux", "cpu": "x64" }, "sha512-IpLYfposPA/XLxYOKpRfeccl1p5dDa3+okZDHHTchBkXEaVCnq5MADPmIWwIYj1tudt7hORsEHccG5no6IUQRw=="], + + "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.15.24", "", { "os": "linux", "cpu": "x64" }, "sha512-JHy3fMSc0t/EPWgo74+OK5TGr51aElnzqfUPaiRf2qJ/BfX5CUCfMiWVBuhI7qmVMBnk1jTRnL/xZnOSHDPLYg=="], + + "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.15.24", "", { "os": "win32", "cpu": "arm64" }, "sha512-Txj+qUH1z2bUd1P3JvwByfjKFti3cptlAxhWgmunBUUxy/IW3CXLZ6l6Gk4liANadKkU71nIU1X30Z5vpMT3BA=="], + + "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.15.24", "", { "os": "win32", "cpu": "ia32" }, "sha512-15D/nl3XwrhFpMv+MADFOiVwv3FvH9j8c6Rf8EXBT3Q5LoMh8YnDnSgPYqw1JzPnksvsBX6QPXLiPqmcR/Z4qQ=="], + + "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.15.24", "", { "os": "win32", "cpu": "x64" }, "sha512-PR0PlTlPra2JbaDphrOAzm6s0v9rA0F17YzB+XbWD95B4g2cWcZY9LAeTa4xll70VLw9Jr7xBrlohqlQmelMFQ=="], + + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], + + "@swc/helpers": ["@swc/helpers@0.5.21", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg=="], + + "@swc/types": ["@swc/types@0.1.26", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw=="], + + "@tailwindcss/forms": ["@tailwindcss/forms@0.5.11", "", { "dependencies": { "mini-svg-data-uri": "^1.2.3" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" } }, "sha512-h9wegbZDPurxG22xZSoWtdzc41/OlNEUQERNqI/0fOwa2aVlWGu7C35E/x6LDyD3lgtztFSSjKZyuVM0hxhbgA=="], + + "@tailwindcss/node": ["@tailwindcss/node@4.2.2", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.2" } }, "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA=="], + + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.2", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.2", "@tailwindcss/oxide-darwin-arm64": "4.2.2", "@tailwindcss/oxide-darwin-x64": "4.2.2", "@tailwindcss/oxide-freebsd-x64": "4.2.2", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", "@tailwindcss/oxide-linux-x64-musl": "4.2.2", "@tailwindcss/oxide-wasm32-wasi": "4.2.2", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg=="], + + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.2", "", { "os": "android", "cpu": "arm64" }, "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg=="], + + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg=="], + + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw=="], + + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ=="], + + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2", "", { "os": "linux", "cpu": "arm" }, "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ=="], + + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw=="], + + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag=="], + + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg=="], + + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ=="], + + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.2", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q=="], + + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ=="], + + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.2", "", { "os": "win32", "cpu": "x64" }, "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA=="], + + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.2", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.2", "@tailwindcss/oxide": "4.2.2", "postcss": "^8.5.6", "tailwindcss": "4.2.2" } }, "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ=="], + + "@tailwindcss/typography": ["@tailwindcss/typography@0.5.19", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="], + + "@vue/reactivity": ["@vue/reactivity@3.1.5", "", { "dependencies": { "@vue/shared": "3.1.5" } }, "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg=="], + + "@vue/shared": ["@vue/shared@3.1.5", "", {}, "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="], + + "alpinejs": ["alpinejs@3.15.11", "", { "dependencies": { "@vue/reactivity": "~3.1.1" } }, "sha512-m26gkTg/MId8O+F4jHKK3vB3SjbFxxk/JHP+qzmw1H6aQrZuPAg4CUoAefnASzzp/eNroBjrRQe7950bNeaBJw=="], + + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + + "base-x": ["base-x@3.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.16", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA=="], + + "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001787", "", {}, "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + + "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], + + "clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + + "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], + + "dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.334", "", {}, "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog=="], + + "enhanced-resolve": ["enhanced-resolve@5.20.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "get-port": ["get-port@4.2.0", "", {}, "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw=="], + + "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "^0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "htmx.org": ["htmx.org@2.0.8", "", {}, "sha512-fm297iru0iWsNJlBrjvtN7V9zjaxd+69Oqjh4F/Vq9Wwi2kFisLcrLCiv5oBX0KLfOX/zG8AUo9ROMU5XUB44Q=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + + "lmdb": ["lmdb@2.8.5", "", { "dependencies": { "msgpackr": "^1.9.5", "node-addon-api": "^6.1.0", "node-gyp-build-optional-packages": "5.1.1", "ordered-binary": "^1.4.1", "weak-lru-cache": "^1.2.2" }, "optionalDependencies": { "@lmdb/lmdb-darwin-arm64": "2.8.5", "@lmdb/lmdb-darwin-x64": "2.8.5", "@lmdb/lmdb-linux-arm": "2.8.5", "@lmdb/lmdb-linux-arm64": "2.8.5", "@lmdb/lmdb-linux-x64": "2.8.5", "@lmdb/lmdb-win32-x64": "2.8.5" }, "bin": { "download-lmdb-prebuilds": "bin/download-prebuilds.js" } }, "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + + "mini-svg-data-uri": ["mini-svg-data-uri@1.4.4", "", { "bin": { "mini-svg-data-uri": "cli.js" } }, "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg=="], + + "msgpackr": ["msgpackr@1.11.9", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw=="], + + "msgpackr-extract": ["msgpackr-extract@3.0.3", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA=="], + + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + + "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], + + "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.1.1", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-test": "build-test.js", "node-gyp-build-optional-packages-optional": "optional.js" } }, "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw=="], + + "node-releases": ["node-releases@2.0.37", "", {}, "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg=="], + + "nullthrows": ["nullthrows@1.1.1", "", {}, "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="], + + "ordered-binary": ["ordered-binary@1.6.1", "", {}, "sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w=="], + + "parcel": ["parcel@2.16.4", "", { "dependencies": { "@parcel/config-default": "2.16.4", "@parcel/core": "2.16.4", "@parcel/diagnostic": "2.16.4", "@parcel/events": "2.16.4", "@parcel/feature-flags": "2.16.4", "@parcel/fs": "2.16.4", "@parcel/logger": "2.16.4", "@parcel/package-manager": "2.16.4", "@parcel/reporter-cli": "2.16.4", "@parcel/reporter-dev-server": "2.16.4", "@parcel/reporter-tracer": "2.16.4", "@parcel/utils": "2.16.4", "chalk": "^4.1.2", "commander": "^12.1.0", "get-port": "^4.2.0" }, "bin": { "parcel": "lib/bin.js" } }, "sha512-RQlrqs4ujYNJpTQi+dITqPKNhRWEqpjPd1YBcGp50Wy3FcJHpwu0/iRm7XWz2dKU/Bwp2qCcVYPIeEDYi2uOUw=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + + "postcss": ["postcss@8.5.9", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw=="], + + "postcss-selector-parser": ["postcss-selector-parser@6.0.10", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], + + "react-refresh": ["react-refresh@0.16.0", "", {}, "sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A=="], + + "regenerator-runtime": ["regenerator-runtime@0.14.1", "", {}, "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="], + + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + + "tailwindcss": ["tailwindcss@4.2.2", "", {}, "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="], + + "tapable": ["tapable@2.3.2", "", {}, "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA=="], + + "term-size": ["term-size@2.2.1", "", {}, "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "utility-types": ["utility-types@3.11.0", "", {}, "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw=="], + + "weak-lru-cache": ["weak-lru-cache@1.2.2", "", {}, "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw=="], + + "@parcel/watcher/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], + + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ=="], + + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "lightningcss/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "lmdb/node-addon-api": ["node-addon-api@6.1.0", "", {}, "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="], + + "msgpackr-extract/node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="], + + "node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "msgpackr-extract/node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..46d372f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +# Auto-generated docker-compose.yml file. +# See https://gowebly.org for more information. + +version: '3.8' + +# Define services. +services: + # Service for the 'chi' Go backend. + gowebly_chi: + # Configuration for building the Docker image for the service. + build: + # Use an image built from the specified Dockerfile in the current directory. + context: . + dockerfile: Dockerfile + # Set restart rules for the container. + restart: unless-stopped + # Forward the exposed port 7000 on the container to port 7000 on the host machine. + ports: + - '7000:7000' + # Set needed environment variables for the Go backend. + environment: + BACKEND_PORT: 7000 # same as the exposed container port + # Networks to join. + # Services on the same network can communicate with each other using their name. + networks: + - gowebly_chi_network + +# Define Docker networks. +networks: + # Create gowebly network. + gowebly_chi_network: diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..d124286 --- /dev/null +++ b/go.mod @@ -0,0 +1,10 @@ +module github.com/bergbauer888/backgroundoo + +go 1.26.1 + +require ( + github.com/a-h/templ v0.3.1001 + github.com/angelofallars/htmx-go v0.5.0 + github.com/go-chi/chi/v5 v5.2.5 + github.com/gowebly/helpers v0.4.0 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..7db8eb9 --- /dev/null +++ b/go.sum @@ -0,0 +1,10 @@ +github.com/a-h/templ v0.3.1001 h1:yHDTgexACdJttyiyamcTHXr2QkIeVF1MukLy44EAhMY= +github.com/a-h/templ v0.3.1001/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo= +github.com/angelofallars/htmx-go v0.5.0 h1:L7M48cCH7nX8cV5wRYn04pN6AE4qNdh86iTbuKxhnIo= +github.com/angelofallars/htmx-go v0.5.0/go.mod h1:izXk6A+Jllc3vXs1dUvxUJs/jE0weiEC07ZPlCVi4cc= +github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug= +github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/gowebly/helpers v0.4.0 h1:EuB/BYQCUQegf/CPTwLKPsJvTMDtaBRF4WY8bMJiR3o= +github.com/gowebly/helpers v0.4.0/go.mod h1:jsMun6VyqRyX03uUANig2MMIU5Y5g9ybx8Jg6ezeyTk= diff --git a/handlers.go b/handlers.go new file mode 100644 index 0000000..3f76c36 --- /dev/null +++ b/handlers.go @@ -0,0 +1,73 @@ +package main + +import ( + "log/slog" + "net/http" + + "github.com/angelofallars/htmx-go" + + "github.com/bergbauer888/backgroundoo/templates" + "github.com/bergbauer888/backgroundoo/templates/pages" +) + +// indexViewHandler handles a view for the index page. +func indexViewHandler(w http.ResponseWriter, r *http.Request) { + // Check, if the current URL is '/'. + if r.URL.Path != "/" { + // If not, return HTTP 404 error. + http.NotFound(w, r) + slog.Error("render page", "method", r.Method, "status", http.StatusNotFound, "path", r.URL.Path) + return + } + + // Define template meta tags. + metaTags := pages.MetaTags( + "gowebly, htmx example page, go with htmx", // define meta keywords + "Welcome to example! You're here because it worked out.", // define meta description + ) + + // Define template body content. + bodyContent := pages.BodyContent( + "Welcome to example!", // define h1 text + "You're here because it worked out.", // define p text + ) + + // Define template layout for index page. + indexTemplate := templates.Layout( + "Welcome to example!", // define title text + metaTags, // define meta tags + bodyContent, // define body content + ) + + // Render index page template. + if err := htmx.NewResponse().RenderTempl(r.Context(), w, indexTemplate); err != nil { + // Send HTTP 500 error with log. + w.WriteHeader(http.StatusInternalServerError) + slog.Error("render template", "method", r.Method, "status", http.StatusInternalServerError, "path", r.URL.Path) + return + } + + // Send log message. + slog.Info("render page", "method", r.Method, "status", http.StatusOK, "path", r.URL.Path) +} + +// showContentAPIHandler handles an API endpoint to show content. +func showContentAPIHandler(w http.ResponseWriter, r *http.Request) { + // Check, if the current request has a 'HX-Request' header. + // For more information, see https://htmx.org/docs/#request-headers + if !htmx.IsHTMX(r) { + // If not, return HTTP 400 error. + w.WriteHeader(http.StatusBadRequest) + slog.Error("request API", "method", r.Method, "status", http.StatusBadRequest, "path", r.URL.Path) + return + } + + // Write HTML content. + w.Write([]byte("

🎉 Yes, htmx is ready to use! (GET /api/hello-world)

")) + + // Send htmx response. + htmx.NewResponse().Write(w) + + // Send log message. + slog.Info("request API", "method", r.Method, "status", http.StatusOK, "path", r.URL.Path) +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..f469a7d --- /dev/null +++ b/main.go @@ -0,0 +1,14 @@ +package main + +import ( + "log/slog" + "os" +) + +func main() { + // Run your server. + if err := runServer(); err != nil { + slog.Error("Failed to start server!", "details", err.Error()) + os.Exit(1) + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f790d57 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "backgroundoo", + "version": "0.0.1", + "description": "Frontend part of the Gowebly project.", + "license": "MIT", + "browserslist": "> 0.5%, last 2 versions, not dead", + "scripts": { + "fmt": "prettier --write .", + "build": "parcel build ./assets/scripts.js ./assets/styles.css --dist-dir ./static", + "dev": "parcel build ./assets/scripts.js ./assets/styles.css --dist-dir ./static --no-optimize", + "watch": "parcel watch ./assets/scripts.js ./assets/styles.css --dist-dir ./static --no-optimize" + }, + "dependencies": { + "tailwindcss": "latest", + "alpinejs": "latest", + "htmx.org": "latest" + }, + "devDependencies": { + "@tailwindcss/forms": "latest", + "@tailwindcss/typography": "latest", + "@tailwindcss/postcss": "latest", + "@parcel/transformer-css": "latest", + "parcel": "latest", + "postcss": "latest", + "prettier": "latest" + } +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..4d4f52e --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,13 @@ +/** @type {import('prettier').Config} */ +module.exports = { + trailingComma: 'es5', + tabWidth: 2, + semi: false, + singleQuote: true, + overrides: [ + { + files: '.postcssrc', + options: { parser: 'json' }, + }, + ], +} diff --git a/server.go b/server.go new file mode 100644 index 0000000..4bfa8ac --- /dev/null +++ b/server.go @@ -0,0 +1,56 @@ +package main + +import ( + "embed" + "fmt" + "log/slog" + "net/http" + "strconv" + "time" + + "github.com/go-chi/chi/v5" + "github.com/go-chi/chi/v5/middleware" + + gowebly "github.com/gowebly/helpers" +) + +//go:embed all:static +var static embed.FS + +// runServer runs a new HTTP server with the loaded environment variables. +func runServer() error { + // Validate environment variables. + port, err := strconv.Atoi(gowebly.Getenv("BACKEND_PORT", "7000")) + if err != nil { + return err + } + + // Create a new chi router. + router := chi.NewRouter() + + // Use chi middlewares. + router.Use(middleware.Logger) + + // Handle static files from the embed FS (with a custom handler). + router.Handle("/static/*", gowebly.StaticFileServerHandler(http.FS(static))) + + // Handle index page view. + router.Get("/", indexViewHandler) + + // Handle API endpoints. + router.Get("/api/hello-world", showContentAPIHandler) + + // Create a new server instance with options from environment variables. + // For more information, see https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/ + server := &http.Server{ + Addr: fmt.Sprintf(":%d", port), + Handler: router, // handle all chi routes + ReadTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, + } + + // Send log message. + slog.Info("Starting server...", "port", port) + + return server.ListenAndServe() +} diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png new file mode 100644 index 0000000..a0cc737 Binary files /dev/null and b/static/apple-touch-icon.png differ diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000..79e7abe Binary files /dev/null and b/static/favicon.ico differ diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..a0cc737 Binary files /dev/null and b/static/favicon.png differ diff --git a/static/favicon.svg b/static/favicon.svg new file mode 100644 index 0000000..e438d24 --- /dev/null +++ b/static/favicon.svg @@ -0,0 +1 @@ + diff --git a/static/images/gowebly.svg b/static/images/gowebly.svg new file mode 100644 index 0000000..b45bce3 --- /dev/null +++ b/static/images/gowebly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/manifest-desktop-screenshot.jpg b/static/manifest-desktop-screenshot.jpg new file mode 100644 index 0000000..d45f376 Binary files /dev/null and b/static/manifest-desktop-screenshot.jpg differ diff --git a/static/manifest-mobile-screenshot.jpg b/static/manifest-mobile-screenshot.jpg new file mode 100644 index 0000000..6feca41 Binary files /dev/null and b/static/manifest-mobile-screenshot.jpg differ diff --git a/static/manifest-touch-icon.svg b/static/manifest-touch-icon.svg new file mode 100644 index 0000000..e438d24 --- /dev/null +++ b/static/manifest-touch-icon.svg @@ -0,0 +1 @@ + diff --git a/static/manifest.webmanifest b/static/manifest.webmanifest new file mode 100644 index 0000000..d514537 --- /dev/null +++ b/static/manifest.webmanifest @@ -0,0 +1,33 @@ +{ + "name": "My PWA Project", + "short_name": "My PWA Project", + "description": "The PWA (Progressive Web App) part of the Gowebly project.", + "background_color": "#FEFEF5", + "theme_color": "#FEFEF5", + "display": "standalone", + "orientation": "portrait", + "start_url": ".", + "icons": [ + { + "src": "manifest-touch-icon.svg", + "type": "image/svg+xml", + "sizes": "any" + } + ], + "screenshots": [ + { + "src": "manifest-desktop-screenshot.jpg", + "sizes": "1280x720", + "type": "image/jpeg", + "form_factor": "wide", + "label": "Desktop homescreen of My PWA Project" + }, + { + "src": "manifest-mobile-screenshot.jpg", + "sizes": "720x1280", + "type": "image/jpeg", + "form_factor": "narrow", + "label": "Mobile homescreen of My PWA Project" + } + ] +} diff --git a/static/scripts.js b/static/scripts.js new file mode 100644 index 0000000..d9596ee --- /dev/null +++ b/static/scripts.js @@ -0,0 +1,4 @@ +!function(){var $99b18dd98d1424fc$var$reactive,$99b18dd98d1424fc$var$effect,$99b18dd98d1424fc$var$release,$99b18dd98d1424fc$var$raw,$99b18dd98d1424fc$var$theRawEvaluatorFunction,$99b18dd98d1424fc$var$activeEffect,$parcel$global="u">typeof globalThis?globalThis:"u">typeof self?self:"u">typeof window?window:"u">typeof global?global:{},$parcel$modules={},$parcel$inits={},parcelRequire=$parcel$global.parcelRequire5b69;null==parcelRequire&&((parcelRequire=function(e){if(e in $parcel$modules)return $parcel$modules[e].exports;if(e in $parcel$inits){var t=$parcel$inits[e];delete $parcel$inits[e];var n={id:e,exports:{}};return $parcel$modules[e]=n,t.call(n.exports,n,n.exports),n.exports}var r=Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}).register=function(e,t){$parcel$inits[e]=t},$parcel$global.parcelRequire5b69=parcelRequire);var parcelRegister=parcelRequire.register;parcelRegister("5NIBB",function(module,exports){var htmx=function(){"use strict";let currentPathForHistory,htmx={onLoad:null,process:null,on:null,off:null,trigger:null,ajax:null,find:null,findAll:null,closest:null,values:function(e,t){return getInputValues(e,t||"post").values},remove:null,addClass:null,removeClass:null,toggleClass:null,takeClass:null,swap:null,defineExtension:null,removeExtension:null,logAll:null,logNone:null,logger:null,config:{historyEnabled:!0,historyCacheSize:10,refreshOnHistoryMiss:!1,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:!0,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:!0,allowScriptTags:!0,inlineScriptNonce:"",inlineStyleNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:!1,timeout:0,wsReconnectDelay:"full-jitter",wsBinaryType:"blob",disableSelector:"[hx-disable], [data-hx-disable]",scrollBehavior:"instant",defaultFocusScroll:!1,getCacheBusterParam:!1,globalViewTransitions:!1,methodsThatUseUrlParams:["get","delete"],selfRequestsOnly:!0,ignoreTitle:!1,scrollIntoViewOnBoost:!0,triggerSpecsCache:null,disableInheritance:!1,responseHandling:[{code:"204",swap:!1},{code:"[23]..",swap:!0},{code:"[45]..",swap:!1,error:!0}],allowNestedOobSwaps:!0,historyRestoreAsHxRequest:!0,reportValidityOfForms:!1},parseInterval:null,location:location,_:null,version:"2.0.8"};htmx.onLoad=onLoadHelper,htmx.process=processNode,htmx.on=addEventListenerImpl,htmx.off=removeEventListenerImpl,htmx.trigger=triggerEvent,htmx.ajax=ajaxHelper,htmx.find=find,htmx.findAll=findAll,htmx.closest=closest,htmx.remove=removeElement,htmx.addClass=addClassToElement,htmx.removeClass=removeClassFromElement,htmx.toggleClass=toggleClassOnElement,htmx.takeClass=takeClassForElement,htmx.swap=swap,htmx.defineExtension=defineExtension,htmx.removeExtension=removeExtension,htmx.logAll=logAll,htmx.logNone=logNone,htmx.parseInterval=parseInterval,htmx._=internalEval;let internalAPI={addTriggerHandler:addTriggerHandler,bodyContains:bodyContains,canAccessLocalStorage:canAccessLocalStorage,findThisElement:findThisElement,filterValues:filterValues,swap:swap,hasAttribute:hasAttribute,getAttributeValue:getAttributeValue,getClosestAttributeValue:getClosestAttributeValue,getClosestMatch:getClosestMatch,getExpressionVars:getExpressionVars,getHeaders:getHeaders,getInputValues:getInputValues,getInternalData:getInternalData,getSwapSpecification:getSwapSpecification,getTriggerSpecs:getTriggerSpecs,getTarget:getTarget,makeFragment:makeFragment,mergeObjects:mergeObjects,makeSettleInfo:makeSettleInfo,oobSwap:oobSwap,querySelectorExt:querySelectorExt,settleImmediately:settleImmediately,shouldCancel:shouldCancel,triggerEvent:triggerEvent,triggerErrorEvent:triggerErrorEvent,withExtensions:withExtensions},VERBS=["get","post","put","delete","patch"],VERB_SELECTOR=VERBS.map(function(e){return"[hx-"+e+"], [data-hx-"+e+"]"}).join(", ");function parseInterval(e){if(void 0==e)return;let t=NaN;return isNaN(t="ms"==e.slice(-2)?parseFloat(e.slice(0,-2)):"s"==e.slice(-1)?1e3*parseFloat(e.slice(0,-1)):"m"==e.slice(-1)?6e4*parseFloat(e.slice(0,-1)):parseFloat(e))?void 0:t}function getRawAttribute(e,t){return e instanceof Element&&e.getAttribute(t)}function hasAttribute(e,t){return!!e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute("data-"+t))}function getAttributeValue(e,t){return getRawAttribute(e,t)||getRawAttribute(e,"data-"+t)}function parentElt(e){let t=e.parentElement;return!t&&e.parentNode instanceof ShadowRoot?e.parentNode:t}function getDocument(){return document}function getRootNode(e,t){return e.getRootNode?e.getRootNode({composed:t}):getDocument()}function getClosestMatch(e,t){for(;e&&!t(e);)e=parentElt(e);return e||null}function getAttributeValueWithDisinheritance(e,t,n){let r=getAttributeValue(t,n),i=getAttributeValue(t,"hx-disinherit");var o=getAttributeValue(t,"hx-inherit");if(e!==t){if(htmx.config.disableInheritance)if(o&&("*"===o||o.split(" ").indexOf(n)>=0))return r;else return null;if(i&&("*"===i||i.split(" ").indexOf(n)>=0))return"unset"}return r}function getClosestAttributeValue(e,t){let n=null;if(getClosestMatch(e,function(r){return!!(n=getAttributeValueWithDisinheritance(e,asElement(r),t))}),"unset"!==n)return n}function matches(e,t){return e instanceof Element&&e.matches(t)}function getStartTag(e){let t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i.exec(e);return t?t[1].toLowerCase():""}function parseHTML(e){return"parseHTMLUnsafe"in Document?Document.parseHTMLUnsafe(e):new DOMParser().parseFromString(e,"text/html")}function takeChildrenFor(e,t){for(;t.childNodes.length>0;)e.append(t.childNodes[0])}function duplicateScript(e){let t=getDocument().createElement("script");return forEach(e.attributes,function(e){t.setAttribute(e.name,e.value)}),t.textContent=e.textContent,t.async=!1,htmx.config.inlineScriptNonce&&(t.nonce=htmx.config.inlineScriptNonce),t}function isJavaScriptScriptNode(e){return e.matches("script")&&("text/javascript"===e.type||"module"===e.type||""===e.type)}function normalizeScriptTags(e){Array.from(e.querySelectorAll("script")).forEach(e=>{if(isJavaScriptScriptNode(e)){let t=duplicateScript(e),n=e.parentNode;try{n.insertBefore(t,e)}catch(e){logError(e)}finally{e.remove()}}})}function makeFragment(e){let t,n=e.replace(/]*)?>[\s\S]*?<\/head>/i,""),r=getStartTag(n);if("html"===r){t=new DocumentFragment;let n=parseHTML(e);takeChildrenFor(t,n.body),t.title=n.title}else if("body"===r){t=new DocumentFragment;let e=parseHTML(n);takeChildrenFor(t,e.body),t.title=e.title}else{let e=parseHTML('");(t=e.querySelector("template").content).title=e.title;var i=t.querySelector("title");i&&i.parentNode===t&&(i.remove(),t.title=i.innerText)}return t&&(htmx.config.allowScriptTags?normalizeScriptTags(t):t.querySelectorAll("script").forEach(e=>e.remove())),t}function maybeCall(e){e&&e()}function isType(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function isFunction(e){return"function"==typeof e}function isRawObject(e){return isType(e,"Object")}function getInternalData(e){let t="htmx-internal-data",n=e[t];return n||(n=e[t]={}),n}function toArray(e){let t=[];if(e)for(let n=0;n=0}function bodyContains(e){return e.getRootNode({composed:!0})===document}function splitOnWhitespace(e){return e.trim().split(/\s+/)}function mergeObjects(e,t){for(let n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function parseJSON(e){try{return JSON.parse(e)}catch(e){return logError(e),null}}function canAccessLocalStorage(){let e="htmx:sessionStorageTest";try{return sessionStorage.setItem(e,e),sessionStorage.removeItem(e),!0}catch(e){return!1}}function normalizePath(e){let t=new URL(e,"http://x");return t&&(e=t.pathname+t.search),"/"!=e&&(e=e.replace(/\/+$/,"")),e}function internalEval(str){return maybeEval(getDocument().body,function(){return eval(str)})}function onLoadHelper(e){return htmx.on("htmx:load",function(t){e(t.detail.elt)})}function logAll(){htmx.logger=function(e,t,n){console&&console.log(t,e,n)}}function logNone(){htmx.logger=null}function find(e,t){return"string"!=typeof e?e.querySelector(t):find(getDocument(),e)}function findAll(e,t){return"string"!=typeof e?e.querySelectorAll(t):findAll(getDocument(),e)}function getWindow(){return window}function removeElement(e,t){e=resolveTarget(e),t?getWindow().setTimeout(function(){removeElement(e),e=null},t):parentElt(e).removeChild(e)}function asElement(e){return e instanceof Element?e:null}function asHtmlElement(e){return e instanceof HTMLElement?e:null}function asString(e){return"string"==typeof e?e:null}function asParentNode(e){return e instanceof Element||e instanceof Document||e instanceof DocumentFragment?e:null}function addClassToElement(e,t,n){(e=asElement(resolveTarget(e)))&&(n?getWindow().setTimeout(function(){addClassToElement(e,t),e=null},n):e.classList&&e.classList.add(t))}function removeClassFromElement(e,t,n){let r=asElement(resolveTarget(e));r&&(n?getWindow().setTimeout(function(){removeClassFromElement(r,t),r=null},n):r.classList&&(r.classList.remove(t),0===r.classList.length&&r.removeAttribute("class")))}function toggleClassOnElement(e,t){(e=resolveTarget(e)).classList.toggle(t)}function takeClassForElement(e,t){forEach((e=resolveTarget(e)).parentElement.children,function(e){removeClassFromElement(e,t)}),addClassToElement(asElement(e),t)}function closest(e,t){return(e=asElement(resolveTarget(e)))?e.closest(t):null}function startsWith(e,t){return e.substring(0,t.length)===t}function endsWith(e,t){return e.substring(e.length-t.length)===t}function normalizeSelector(e){let t=e.trim();return startsWith(t,"<")&&endsWith(t,"/>")?t.substring(1,t.length-2):t}function querySelectorAllExt(e,t,n){if(0===t.indexOf("global "))return querySelectorAllExt(e,t.slice(7),!0);e=resolveTarget(e);let r=[];{let e=0,n=0;for(let i=0;i"===t[i+1]&&e--}n0;){let t,l=normalizeSelector(r.shift());0===l.indexOf("closest ")?t=closest(asElement(e),normalizeSelector(l.slice(8))):0===l.indexOf("find ")?t=find(asParentNode(e),normalizeSelector(l.slice(5))):"next"===l||"nextElementSibling"===l?t=asElement(e).nextElementSibling:0===l.indexOf("next ")?t=scanForwardQuery(e,normalizeSelector(l.slice(5)),!!n):"previous"===l||"previousElementSibling"===l?t=asElement(e).previousElementSibling:0===l.indexOf("previous ")?t=scanBackwardsQuery(e,normalizeSelector(l.slice(9)),!!n):"document"===l?t=document:"window"===l?t=window:"body"===l?t=document.body:"root"===l?t=getRootNode(e,!!n):"host"===l?t=e.getRootNode().host:o.push(l),t&&i.push(t)}if(o.length>0){let t=o.join(","),r=asParentNode(getRootNode(e,!!n));i.push(...toArray(r.querySelectorAll(t)))}return i}var scanForwardQuery=function(e,t,n){let r=asParentNode(getRootNode(e,n)).querySelectorAll(t);for(let t=0;t=0;t--){let n=r[t];if(n.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_FOLLOWING)return n}};function querySelectorExt(e,t){return"string"!=typeof e?querySelectorAllExt(e,t)[0]:querySelectorAllExt(getDocument().body,e)[0]}function resolveTarget(e,t){return"string"==typeof e?find(asParentNode(t)||document,e):e}function processEventArgs(e,t,n,r){return isFunction(t)?{target:getDocument().body,event:asString(e),listener:t,options:n}:{target:resolveTarget(e),event:asString(t),listener:n,options:r}}function addEventListenerImpl(e,t,n,r){return ready(function(){let i=processEventArgs(e,t,n,r);i.target.addEventListener(i.event,i.listener,i.options)}),isFunction(t)?t:n}function removeEventListenerImpl(e,t,n){return ready(function(){let r=processEventArgs(e,t,n);r.target.removeEventListener(r.event,r.listener)}),isFunction(t)?t:n}let DUMMY_ELT=getDocument().createElement("output");function findAttributeTargets(e,t){let n=getClosestAttributeValue(e,t);if(n)if("this"===n)return[findThisElement(e,t)];else{let r=querySelectorAllExt(e,n);if(/(^|,)(\s*)inherit(\s*)($|,)/.test(n)){let n=asElement(getClosestMatch(e,function(n){return n!==e&&hasAttribute(asElement(n),t)}));n&&r.push(...findAttributeTargets(n,t))}return 0===r.length?(logError('The selector "'+n+'" on '+t+" returned no matches!"),[DUMMY_ELT]):r}}function findThisElement(e,t){return asElement(getClosestMatch(e,function(e){return null!=getAttributeValue(asElement(e),t)}))}function getTarget(e){let t=getClosestAttributeValue(e,"hx-target");if(t)if("this"===t)return findThisElement(e,"hx-target");else return querySelectorExt(e,t);return getInternalData(e).boosted?getDocument().body:e}function shouldSettleAttribute(e){return htmx.config.attributesToSettle.includes(e)}function cloneAttributes(e,t){forEach(Array.from(e.attributes),function(n){!t.hasAttribute(n.name)&&shouldSettleAttribute(n.name)&&e.removeAttribute(n.name)}),forEach(t.attributes,function(t){shouldSettleAttribute(t.name)&&e.setAttribute(t.name,t.value)})}function isInlineSwap(e,t){let n=getExtensions(t);for(let t=0;t0?(o=e.substring(0,e.indexOf(":")),i=e.substring(e.indexOf(":")+1)):o=e),t.removeAttribute("hx-swap-oob"),t.removeAttribute("data-hx-swap-oob");let l=querySelectorAllExt(r,i,!1);return l.length?(forEach(l,function(e){let r,i=t.cloneNode(!0);(r=getDocument().createDocumentFragment()).appendChild(i),isInlineSwap(o,e)||(r=asParentNode(i));let l={shouldSwap:!0,target:e,fragment:r};triggerEvent(e,"htmx:oobBeforeSwap",l)&&(e=l.target,l.shouldSwap&&(handlePreservedElements(r),swapWithStyle(o,e,e,r,n),restorePreservedElements()),forEach(n.elts,function(e){triggerEvent(e,"htmx:oobAfterSwap",l)}))}),t.parentNode.removeChild(t)):(t.parentNode.removeChild(t),triggerErrorEvent(getDocument().body,"htmx:oobErrorNoTarget",{content:t})),e}function restorePreservedElements(){let e=find("#--htmx-preserve-pantry--");if(e){for(let t of[...e.children]){let e=find("#"+t.id);e.parentNode.moveBefore(t,e),e.remove()}e.remove()}}function handlePreservedElements(e){forEach(findAll(e,"[hx-preserve], [data-hx-preserve]"),function(e){let t=getAttributeValue(e,"id"),n=getDocument().getElementById(t);if(null!=n)if(e.moveBefore){let e=find("#--htmx-preserve-pantry--");null==e&&(getDocument().body.insertAdjacentHTML("afterend","
"),e=find("#--htmx-preserve-pantry--")),e.moveBefore(n,null)}else e.parentNode.replaceChild(n,e)})}function handleAttributes(e,t,n){forEach(t.querySelectorAll("[id]"),function(t){let r=getRawAttribute(t,"id");if(r&&r.length>0){let i=r.replace("'","\\'"),o=t.tagName.replace(":","\\:"),l=asParentNode(e),a=l&&l.querySelector(o+"[id='"+i+"']");if(a&&a!==l){let e=t.cloneNode();cloneAttributes(t,a),n.tasks.push(function(){cloneAttributes(t,e)})}}})}function makeAjaxLoadTask(e){return function(){removeClassFromElement(e,htmx.config.addedClass),processNode(asElement(e)),processFocus(asParentNode(e)),triggerEvent(e,"htmx:load")}}function processFocus(e){let t="[autofocus]",n=asHtmlElement(matches(e,t)?e:e.querySelector(t));null!=n&&n.focus()}function insertNodesBefore(e,t,n,r){for(handleAttributes(e,n,r);n.childNodes.length>0;){let i=n.firstChild;addClassToElement(asElement(i),htmx.config.addedClass),e.insertBefore(i,t),i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE&&r.tasks.push(makeAjaxLoadTask(i))}}function stringHash(e,t){let n=0;for(;n0}function swap(e,t,n,r){r||(r={});let i=null,o=null,l=function(){maybeCall(r.beforeSwapCallback),e=resolveTarget(e);let o=r.contextElement?getRootNode(r.contextElement,!1):getDocument(),l=document.activeElement,a={};a={elt:l,start:l?l.selectionStart:null,end:l?l.selectionEnd:null};let s=makeSettleInfo(e);if("textContent"===n.swapStyle)e.textContent=t;else{let i=makeFragment(t);if(s.title=r.title||i.title,r.historyRequest&&(i=i.querySelector("[hx-history-elt],[data-hx-history-elt]")||i),r.selectOOB){let e=r.selectOOB.split(",");for(let t=0;t0?getWindow().setTimeout(u,n.settleDelay):u()},a=htmx.config.globalViewTransitions;n.hasOwnProperty("transition")&&(a=n.transition);let s=r.contextElement||getDocument();if(a&&triggerEvent(s,"htmx:beforeTransition",r.eventInfo)&&"u">typeof Promise&&document.startViewTransition){let e=new Promise(function(e,t){i=e,o=t}),t=l;l=function(){document.startViewTransition(function(){return t(),e})}}try{n?.swapDelay&&n.swapDelay>0?getWindow().setTimeout(l,n.swapDelay):l()}catch(e){throw triggerErrorEvent(s,"htmx:swapError",r.eventInfo),maybeCall(o),e}}function handleTriggerHeader(e,t,n){let r=e.getResponseHeader(t);if(0===r.indexOf("{")){let e=parseJSON(r);for(let t in e)if(e.hasOwnProperty(t)){let r=e[t];isRawObject(r)?n=void 0!==r.target?r.target:n:r={value:r},triggerEvent(n,t,r)}}else{let e=r.split(",");for(let t=0;t0;){let l=t[0];if("]"===l){if(0==--r){null===o&&(i+="true"),t.shift(),i+=")})";try{let t=maybeEval(e,function(){return Function(i)()},function(){return!0});return t.source=i,t}catch(e){return triggerErrorEvent(getDocument().body,"htmx:syntax:error",{error:e,source:i}),null}}}else"["===l&&r++;isPossibleRelativeReference(l,o,n)?i+="(("+n+"."+l+") ? ("+n+"."+l+") : (window."+l+"))":i+=l,o=t.shift()}}}function consumeUntil(e,t){let n="";for(;e.length>0&&!t.test(e[0]);)n+=e.shift();return n}function consumeCSSSelector(e){let t;return e.length>0&&COMBINED_SELECTOR_START.test(e[0])?(e.shift(),t=consumeUntil(e,COMBINED_SELECTOR_END).trim(),e.shift()):t=consumeUntil(e,WHITESPACE_OR_COMMA),t}let INPUT_SELECTOR="input, textarea, select";function parseAndCacheTrigger(e,t,n){let r=[],i=tokenizeString(t);do{consumeUntil(i,NOT_WHITESPACE);let t=i.length,n=consumeUntil(i,/[,\[\s]/);if(""!==n)if("every"===n){let t={trigger:"every"};consumeUntil(i,NOT_WHITESPACE),t.pollInterval=parseInterval(consumeUntil(i,/[,\[\s]/)),consumeUntil(i,NOT_WHITESPACE);var o=maybeGenerateConditional(e,i,"event");o&&(t.eventFilter=o),r.push(t)}else{let t={trigger:n};var o=maybeGenerateConditional(e,i,"event");for(o&&(t.eventFilter=o),consumeUntil(i,NOT_WHITESPACE);i.length>0&&","!==i[0];){let n=i.shift();if("changed"===n)t.changed=!0;else if("once"===n)t.once=!0;else if("consume"===n)t.consume=!0;else if("delay"===n&&":"===i[0])i.shift(),t.delay=parseInterval(consumeUntil(i,WHITESPACE_OR_COMMA));else if("from"===n&&":"===i[0]){if(i.shift(),COMBINED_SELECTOR_START.test(i[0]))var l=consumeCSSSelector(i);else{var l=consumeUntil(i,WHITESPACE_OR_COMMA);if("closest"===l||"find"===l||"next"===l||"previous"===l){i.shift();let e=consumeCSSSelector(i);e.length>0&&(l+=" "+e)}}t.from=l}else"target"===n&&":"===i[0]?(i.shift(),t.target=consumeCSSSelector(i)):"throttle"===n&&":"===i[0]?(i.shift(),t.throttle=parseInterval(consumeUntil(i,WHITESPACE_OR_COMMA))):"queue"===n&&":"===i[0]?(i.shift(),t.queue=consumeUntil(i,WHITESPACE_OR_COMMA)):"root"===n&&":"===i[0]?(i.shift(),t[n]=consumeCSSSelector(i)):"threshold"===n&&":"===i[0]?(i.shift(),t[n]=consumeUntil(i,WHITESPACE_OR_COMMA)):triggerErrorEvent(e,"htmx:syntax:error",{token:i.shift()});consumeUntil(i,NOT_WHITESPACE)}r.push(t)}i.length===t&&triggerErrorEvent(e,"htmx:syntax:error",{token:i.shift()}),consumeUntil(i,NOT_WHITESPACE)}while(","===i[0]&&i.shift())return n&&(n[t]=r),r}function getTriggerSpecs(e){let t=getAttributeValue(e,"hx-trigger"),n=[];if(t){let r=htmx.config.triggerSpecsCache;n=r&&r[t]||parseAndCacheTrigger(e,t,r)}return n.length>0?n:matches(e,"form")?[{trigger:"submit"}]:matches(e,'input[type="button"], input[type="submit"]')?[{trigger:"click"}]:matches(e,INPUT_SELECTOR)?[{trigger:"change"}]:[{trigger:"click"}]}function cancelPolling(e){getInternalData(e).cancelled=!0}function processPolling(e,t,n){let r=getInternalData(e);r.timeout=getWindow().setTimeout(function(){bodyContains(e)&&!0!==r.cancelled&&(maybeFilterEvent(n,e,makeEvent("hx:poll:trigger",{triggerSpec:n,target:e}))||t(e),processPolling(e,t,n))},n.pollInterval)}function isLocalLink(e){return location.hostname===e.hostname&&getRawAttribute(e,"href")&&0!==getRawAttribute(e,"href").indexOf("#")}function eltIsDisabled(e){return closest(e,htmx.config.disableSelector)}function boostElement(e,t,n){if(e instanceof HTMLAnchorElement&&isLocalLink(e)&&(""===e.target||"_self"===e.target)||"FORM"===e.tagName&&"dialog"!==String(getRawAttribute(e,"method")).toLowerCase()){let r,i;if(t.boosted=!0,"A"===e.tagName)r="get",i=getRawAttribute(e,"href");else{let t=getRawAttribute(e,"method");r=t?t.toLowerCase():"get",(null==(i=getRawAttribute(e,"action"))||""===i)&&(i=location.href),"get"===r&&i.includes("?")&&(i=i.replace(/\?[^#]+/,""))}n.forEach(function(n){addEventListener(e,function(e,t){let n=asElement(e);eltIsDisabled(n)?cleanUpElement(n):issueAjaxRequest(r,i,n,t)},t,n,!0)})}}function shouldCancel(e,t){if("submit"===e.type&&"FORM"===t.tagName)return!0;if("click"===e.type){let e=t.closest('input[type="submit"], button');if(e&&e.form&&"submit"===e.type)return!0;let n=t.closest("a"),r=/^#.+/;if(n&&n.href&&!r.test(n.getAttribute("href")))return!0}return!1}function ignoreBoostedAnchorCtrlClick(e,t){return getInternalData(e).boosted&&e instanceof HTMLAnchorElement&&"click"===t.type&&(t.ctrlKey||t.metaKey)}function maybeFilterEvent(e,t,n){let r=e.eventFilter;if(r)try{return!0!==r.call(t,n)}catch(t){let e=r.source;return triggerErrorEvent(getDocument().body,"htmx:eventFilter:error",{error:t,source:e}),!0}return!1}function addEventListener(e,t,n,r,i){let o,l=getInternalData(e);o=r.from?querySelectorAllExt(e,r.from):[e],r.changed&&("lastValue"in l||(l.lastValue=new WeakMap),o.forEach(function(e){l.lastValue.has(r)||l.lastValue.set(r,new WeakMap),l.lastValue.get(r).set(e,e.value)})),forEach(o,function(o){let a=function(n){if(!bodyContains(e))return void o.removeEventListener(r.trigger,a);if(ignoreBoostedAnchorCtrlClick(e,n)||((i||shouldCancel(n,o))&&n.preventDefault(),maybeFilterEvent(r,e,n)))return;let s=getInternalData(n);if(s.triggerSpec=r,null==s.handledFor&&(s.handledFor=[]),0>s.handledFor.indexOf(e)){if(s.handledFor.push(e),r.consume&&n.stopPropagation(),r.target&&n.target&&!matches(asElement(n.target),r.target))return;if(r.once)if(l.triggeredOnce)return;else l.triggeredOnce=!0;if(r.changed){let e=n.target,t=e.value,i=l.lastValue.get(r);if(i.has(e)&&i.get(e)===t)return;i.set(e,t)}if(l.delayed&&clearTimeout(l.delayed),l.throttle)return;r.throttle>0?l.throttle||(triggerEvent(e,"htmx:trigger"),t(e,n),l.throttle=getWindow().setTimeout(function(){l.throttle=null},r.throttle)):r.delay>0?l.delayed=getWindow().setTimeout(function(){triggerEvent(e,"htmx:trigger"),t(e,n)},r.delay):(triggerEvent(e,"htmx:trigger"),t(e,n))}};null==n.listenerInfos&&(n.listenerInfos=[]),n.listenerInfos.push({trigger:r.trigger,listener:a,on:o}),o.addEventListener(r.trigger,a)})}let windowIsScrolling=!1,scrollHandler=null;function initScrollHandler(){scrollHandler||(scrollHandler=function(){windowIsScrolling=!0},window.addEventListener("scroll",scrollHandler),window.addEventListener("resize",scrollHandler),setInterval(function(){windowIsScrolling&&(windowIsScrolling=!1,forEach(getDocument().querySelectorAll("[hx-trigger*='revealed'],[data-hx-trigger*='revealed']"),function(e){maybeReveal(e)}))},200))}function maybeReveal(e){!hasAttribute(e,"data-hx-revealed")&&isScrolledIntoView(e)&&(e.setAttribute("data-hx-revealed","true"),getInternalData(e).initHash?triggerEvent(e,"revealed"):e.addEventListener("htmx:afterProcessNode",function(){triggerEvent(e,"revealed")},{once:!0}))}function loadImmediately(e,t,n,r){let i=function(){n.loaded||(n.loaded=!0,triggerEvent(e,"htmx:trigger"),t(e))};r>0?getWindow().setTimeout(i,r):i()}function processVerbs(e,t,n){let r=!1;return forEach(VERBS,function(i){if(hasAttribute(e,"hx-"+i)){let o=getAttributeValue(e,"hx-"+i);r=!0,t.path=o,t.verb=i,n.forEach(function(n){addTriggerHandler(e,n,t,function(e,t){let n=asElement(e);eltIsDisabled(n)?cleanUpElement(n):issueAjaxRequest(i,o,n,t)})})}}),r}function addTriggerHandler(e,t,n,r){if("revealed"===t.trigger)initScrollHandler(),addEventListener(e,r,n,t),maybeReveal(asElement(e));else if("intersect"===t.trigger){let i={};t.root&&(i.root=querySelectorExt(e,t.root)),t.threshold&&(i.threshold=parseFloat(t.threshold)),new IntersectionObserver(function(t){for(let n=0;n0?(n.polling=!0,processPolling(asElement(e),r,t)):addEventListener(e,r,n,t):maybeFilterEvent(t,e,makeEvent("load",{elt:e}))||loadImmediately(asElement(e),r,n,t.delay)}function shouldProcessHxOn(e){let t=asElement(e);if(!t)return!1;let n=t.attributes;for(let e=0;e", "+e).join(""))}}function maybeSetLastButtonClicked(e){let t=getTargetButton(e.target),n=getRelatedFormData(e);n&&(n.lastButtonClicked=t)}function maybeUnsetLastButtonClicked(e){let t=getRelatedFormData(e);t&&(t.lastButtonClicked=null)}function getTargetButton(e){return closest(asElement(e),"button, input[type='submit']")}function getRelatedForm(e){return e.form||closest(e,"form")}function getRelatedFormData(e){let t=getTargetButton(e.target);if(!t)return;let n=getRelatedForm(t);if(n)return getInternalData(n)}function initButtonTracking(e){e.addEventListener("click",maybeSetLastButtonClicked),e.addEventListener("focusin",maybeSetLastButtonClicked),e.addEventListener("focusout",maybeUnsetLastButtonClicked)}function addHxOnEventHandler(e,t,n){let r,i=getInternalData(e);Array.isArray(i.onHandlers)||(i.onHandlers=[]);let o=function(t){maybeEval(e,function(){eltIsDisabled(e)||(r||(r=Function("event",n)),r.call(e,t))})};e.addEventListener(t,o),i.onHandlers.push({event:t,listener:o})}function processHxOnWildcard(e){deInitOnHandlers(e);for(let t=0;thtmx.config.historyCacheSize;)o.shift();for(;o.length>0;)try{sessionStorage.setItem("htmx-history-cache",JSON.stringify(o));break}catch(e){triggerErrorEvent(getDocument().body,"htmx:historyCacheError",{cause:e,cache:o}),o.shift()}}function getCachedHistory(e){if(!canAccessLocalStorage())return null;e=normalizePath(e);let t=parseJSON(sessionStorage.getItem("htmx-history-cache"))||[];for(let n=0;n=200&&this.status<400?(r.response=this.response,triggerEvent(getDocument().body,"htmx:historyCacheMissLoad",r),swap(r.historyElt,r.response,n,{contextElement:r.historyElt,historyRequest:!0}),setCurrentPathForHistory(r.path),triggerEvent(getDocument().body,"htmx:historyRestore",{path:e,cacheMiss:!0,serverResponse:r.response})):triggerErrorEvent(getDocument().body,"htmx:historyCacheMissLoadError",r)},triggerEvent(getDocument().body,"htmx:historyCacheMiss",r)&&t.send()}function restoreHistory(e){saveCurrentPageToHistory();let t=getCachedHistory(e=e||location.pathname+location.search);if(t){let n={swapStyle:"innerHTML",swapDelay:0,settleDelay:0,scroll:t.scroll},r={path:e,item:t,historyElt:getHistoryElement(),swapSpec:n};triggerEvent(getDocument().body,"htmx:historyCacheHit",r)&&(swap(r.historyElt,t.content,n,{contextElement:r.historyElt,title:t.title}),setCurrentPathForHistory(r.path),triggerEvent(getDocument().body,"htmx:historyRestore",r))}else htmx.config.refreshOnHistoryMiss?htmx.location.reload(!0):loadHistoryFromServer(e)}function addRequestIndicatorClasses(e){let t=findAttributeTargets(e,"hx-indicator");return null==t&&(t=[e]),forEach(t,function(e){let t=getInternalData(e);t.requestCount=(t.requestCount||0)+1,e.classList.add.call(e.classList,htmx.config.requestClass)}),t}function disableElements(e){let t=findAttributeTargets(e,"hx-disabled-elt");return null==t&&(t=[]),forEach(t,function(e){let t=getInternalData(e);t.requestCount=(t.requestCount||0)+1,e.setAttribute("disabled",""),e.setAttribute("data-disabled-by-htmx","")}),t}function removeRequestIndicators(e,t){forEach(e.concat(t),function(e){let t=getInternalData(e);t.requestCount=(t.requestCount||1)-1}),forEach(e,function(e){0===getInternalData(e).requestCount&&e.classList.remove.call(e.classList,htmx.config.requestClass)}),forEach(t,function(e){0===getInternalData(e).requestCount&&(e.removeAttribute("disabled"),e.removeAttribute("data-disabled-by-htmx"))})}function haveSeenNode(e,t){for(let n=0;n0>t.indexOf(e)):r.filter(e=>e!==t),n.delete(e),forEach(r,t=>n.append(e,t))}}function getValueFromInput(e){return e instanceof HTMLSelectElement&&e.multiple?toArray(e.querySelectorAll("option:checked")).map(function(e){return e.value}):e instanceof HTMLInputElement&&e.files?toArray(e.files):e.value}function processInputValue(e,t,n,r,i){!(null==r||haveSeenNode(e,r))&&(e.push(r),shouldInclude(r)&&(addValueToFormData(getRawAttribute(r,"name"),getValueFromInput(r),t),i&&validateElement(r,n)),r instanceof HTMLFormElement&&(forEach(r.elements,function(r){e.indexOf(r)>=0?removeValueFromFormData(r.name,getValueFromInput(r),t):e.push(r),i&&validateElement(r,n)}),new FormData(r).forEach(function(e,n){e instanceof File&&""===e.name||addValueToFormData(n,e,t)})))}function validateElement(e,t){let n=e;n.willValidate&&(triggerEvent(n,"htmx:validation:validate"),n.checkValidity()||(triggerEvent(n,"htmx:validation:failed",{message:n.validationMessage,validity:n.validity})&&!t.length&&htmx.config.reportValidityOfForms&&n.reportValidity(),t.push({elt:n,message:n.validationMessage,validity:n.validity})))}function overrideFormData(e,t){for(let n of t.keys())e.delete(n);return t.forEach(function(t,n){e.append(n,t)}),e}function getInputValues(e,t){let n=[],r=new FormData,i=new FormData,o=[],l=getInternalData(e);l.lastButtonClicked&&!bodyContains(l.lastButtonClicked)&&(l.lastButtonClicked=null);let a=e instanceof HTMLFormElement&&!0!==e.noValidate||"true"===getAttributeValue(e,"hx-validate");if(l.lastButtonClicked&&(a=a&&!0!==l.lastButtonClicked.formNoValidate),"get"!==t&&processInputValue(n,i,o,getRelatedForm(e),a),processInputValue(n,r,o,e,a),l.lastButtonClicked||"BUTTON"===e.tagName||"INPUT"===e.tagName&&"submit"===getRawAttribute(e,"type")){let t=l.lastButtonClicked||e;addValueToFormData(getRawAttribute(t,"name"),t.value,i)}return forEach(findAttributeTargets(e,"hx-include"),function(e){processInputValue(n,r,o,asElement(e),a),matches(e,"form")||forEach(asParentNode(e).querySelectorAll(INPUT_SELECTOR),function(e){processInputValue(n,r,o,e,a)})}),overrideFormData(r,i),{errors:o,formData:r,values:formDataProxy(r)}}function appendParam(e,t,n){""!==e&&(e+="&"),"[object Object]"===String(n)&&(n=JSON.stringify(n));let r=encodeURIComponent(n);return e+(encodeURIComponent(t)+"="+r)}function urlEncode(e){e=formDataFromObject(e);let t="";return e.forEach(function(e,n){t=appendParam(t,n,e)}),t}function getHeaders(e,t,n){let r={"HX-Request":"true","HX-Trigger":getRawAttribute(e,"id"),"HX-Trigger-Name":getRawAttribute(e,"name"),"HX-Target":getAttributeValue(t,"id"),"HX-Current-URL":location.href};return getValuesForElement(e,"hx-headers",!1,r),void 0!==n&&(r["HX-Prompt"]=n),getInternalData(e).boosted&&(r["HX-Boosted"]="true"),r}function filterValues(e,t){let n=getClosestAttributeValue(t,"hx-params");if(!n)return e;if("none"===n)return new FormData;if("*"===n)return e;{if(0===n.indexOf("not "))return forEach(n.slice(4).split(","),function(t){t=t.trim(),e.delete(t)}),e;let t=new FormData;return forEach(n.split(","),function(n){n=n.trim(),e.has(n)&&e.getAll(n).forEach(function(e){t.append(n,e)})}),t}}function isAnchorLink(e){return!!getRawAttribute(e,"href")&&getRawAttribute(e,"href").indexOf("#")>=0}function getSwapSpecification(e,t){let n=t||getClosestAttributeValue(e,"hx-swap"),r={swapStyle:getInternalData(e).boosted?"innerHTML":htmx.config.defaultSwapStyle,swapDelay:htmx.config.defaultSwapDelay,settleDelay:htmx.config.defaultSettleDelay};if(htmx.config.scrollIntoViewOnBoost&&getInternalData(e).boosted&&!isAnchorLink(e)&&(r.show="top"),n){let e=splitOnWhitespace(n);if(e.length>0)for(let t=0;t0?i.join(":"):null;r.scroll=e,r.scrollTarget=o}else if(0===n.indexOf("show:")){var i=n.slice(5).split(":");let e=i.pop();var o=i.length>0?i.join(":"):null;r.show=e,r.showTarget=o}else 0===n.indexOf("focus-scroll:")?r.focusScroll="true"==n.slice(13):0==t?r.swapStyle=n:logError("Unknown modifier in hx-swap: "+n)}}return r}function usesFormData(e){return"multipart/form-data"===getClosestAttributeValue(e,"hx-encoding")||matches(e,"form")&&"multipart/form-data"===getRawAttribute(e,"enctype")}function encodeParamsForBody(e,t,n){let r=null;return(withExtensions(t,function(i){null==r&&(r=i.encodeParameters(e,n,t))}),null!=r)?r:usesFormData(t)?overrideFormData(new FormData,formDataFromObject(n)):urlEncode(n)}function makeSettleInfo(e){return{tasks:[],elts:[e]}}function updateScrollState(e,t){let n=e[0],r=e[e.length-1];if(t.scroll){var i=null;t.scrollTarget&&(i=asElement(querySelectorExt(n,t.scrollTarget))),"top"===t.scroll&&(n||i)&&((i=i||n).scrollTop=0),"bottom"===t.scroll&&(r||i)&&((i=i||r).scrollTop=i.scrollHeight),"number"==typeof t.scroll&&getWindow().setTimeout(function(){window.scrollTo(0,t.scroll)},0)}if(t.show){var i=null;if(t.showTarget){let e=t.showTarget;"window"===t.showTarget&&(e="body"),i=asElement(querySelectorExt(n,e))}"top"===t.show&&(n||i)&&(i=i||n).scrollIntoView({block:"start",behavior:htmx.config.scrollBehavior}),"bottom"===t.show&&(r||i)&&(i=i||r).scrollIntoView({block:"end",behavior:htmx.config.scrollBehavior})}}function getValuesForElement(e,t,n,r,i){if(null==r&&(r={}),null==e)return r;let o=getAttributeValue(e,t);if(o){let t,l=o.trim(),a=n;if("unset"===l)return null;for(let n in 0===l.indexOf("javascript:")?(l=l.slice(11),a=!0):0===l.indexOf("js:")&&(l=l.slice(3),a=!0),0!==l.indexOf("{")&&(l="{"+l+"}"),t=a?maybeEval(e,function(){return i?Function("event","return ("+l+")").call(e,i):Function("return ("+l+")").call(e)},{}):parseJSON(l))t.hasOwnProperty(n)&&null==r[n]&&(r[n]=t[n])}return getValuesForElement(asElement(parentElt(e)),t,n,r,i)}function maybeEval(e,t,n){return htmx.config.allowEval?t():(triggerErrorEvent(e,"htmx:evalDisallowedError"),n)}function getHXVarsForElement(e,t,n){return getValuesForElement(e,"hx-vars",!0,n,t)}function getHXValsForElement(e,t,n){return getValuesForElement(e,"hx-vals",!1,n,t)}function getExpressionVars(e,t){return mergeObjects(getHXVarsForElement(e,t),getHXValsForElement(e,t))}function safelySetHeaderValue(e,t,n){if(null!==n)try{e.setRequestHeader(t,n)}catch(r){e.setRequestHeader(t,encodeURIComponent(n)),e.setRequestHeader(t+"-URI-AutoEncoded","true")}}function getPathFromResponse(e){if(e.responseURL)try{let t=new URL(e.responseURL);return t.pathname+t.search}catch(t){triggerErrorEvent(getDocument().body,"htmx:badResponseUrl",{url:e.responseURL})}}function hasHeader(e,t){return t.test(e.getAllResponseHeaders())}function ajaxHelper(e,t,n){if(e=e.toLowerCase(),!n)return issueAjaxRequest(e,t,null,null,{returnPromise:!0});if(n instanceof Element||"string"==typeof n)return issueAjaxRequest(e,t,null,null,{targetOverride:resolveTarget(n)||DUMMY_ELT,returnPromise:!0});{let r=resolveTarget(n.target);return(!n.target||r)&&(!n.source||r||resolveTarget(n.source))||(r=DUMMY_ELT),issueAjaxRequest(e,t,resolveTarget(n.source),n.event,{handler:n.handler,headers:n.headers,values:n.values,targetOverride:r,swapOverride:n.swap,select:n.select,returnPromise:!0,push:n.push,replace:n.replace,selectOOB:n.selectOOB})}}function hierarchyForElt(e){let t=[];for(;e;)t.push(e),e=e.parentElement;return t}function verifyPath(e,t,n){let r=new URL(t,"about:"!==location.protocol?location.href:window.origin),i=("about:"!==location.protocol?location.origin:window.origin)===r.origin;return(!htmx.config.selfRequestsOnly||!!i)&&triggerEvent(e,"htmx:validateUrl",mergeObjects({url:r,sameHost:i},n))}function formDataFromObject(e){if(e instanceof FormData)return e;let t=new FormData;for(let n in e)e.hasOwnProperty(n)&&(e[n]&&"function"==typeof e[n].forEach?e[n].forEach(function(e){t.append(n,e)}):"object"!=typeof e[n]||e[n]instanceof Blob?t.append(n,e[n]):t.append(n,JSON.stringify(e[n])));return t}function formDataArrayProxy(e,t,n){return new Proxy(n,{get:function(n,r){return"number"==typeof r?n[r]:"length"===r?n.length:"push"===r?function(r){n.push(r),e.append(t,r)}:"function"==typeof n[r]?function(){n[r].apply(n,arguments),e.delete(t),n.forEach(function(n){e.append(t,n)})}:n[r]&&1===n[r].length?n[r][0]:n[r]},set:function(n,r,i){return n[r]=i,e.delete(t),n.forEach(function(n){e.append(t,n)}),!0}})}function formDataProxy(e){return new Proxy(e,{get:function(t,n){if("symbol"==typeof n){let r=Reflect.get(t,n);return"function"==typeof r?function(){return r.apply(e,arguments)}:r}if("toJSON"===n)return()=>Object.fromEntries(e);if(n in t&&"function"==typeof t[n])return function(){return e[n].apply(e,arguments)};let r=e.getAll(n);return 0===r.length?void 0:1===r.length?r[0]:formDataArrayProxy(t,n,r)},set:function(e,t,n){return"string"==typeof t&&(e.delete(t),n&&"function"==typeof n.forEach?n.forEach(function(n){e.append(t,n)}):"object"!=typeof n||n instanceof Blob?e.append(t,n):e.append(t,JSON.stringify(n)),!0)},deleteProperty:function(e,t){return"string"==typeof t&&e.delete(t),!0},ownKeys:function(e){return Reflect.ownKeys(Object.fromEntries(e))},getOwnPropertyDescriptor:function(e,t){return Reflect.getOwnPropertyDescriptor(Object.fromEntries(e),t)}})}function issueAjaxRequest(e,t,n,r,i,o){let l=null,a=null;if((i=null!=i?i:{}).returnPromise&&"u">typeof Promise)var s=new Promise(function(e,t){l=e,a=t});null==n&&(n=getDocument().body);let u=i.handler||handleAjaxResponse,c=i.select||null;if(!bodyContains(n))return maybeCall(l),s;let f=i.targetOverride||asElement(getTarget(n));if(null==f||f==DUMMY_ELT)return triggerErrorEvent(n,"htmx:targetError",{target:getClosestAttributeValue(n,"hx-target")}),maybeCall(a),s;let d=getInternalData(n),p=d.lastButtonClicked;if(p){let n=getRawAttribute(p,"formaction");null!=n&&(t=n);let r=getRawAttribute(p,"formmethod");if(null!=r)if(!VERBS.includes(r.toLowerCase()))return maybeCall(l),s;else e=r}let h=getClosestAttributeValue(n,"hx-confirm");if(void 0===o){let o=function(o){return issueAjaxRequest(e,t,n,r,i,!!o)},a={target:f,elt:n,path:t,verb:e,triggeringEvent:r,etc:i,issueRequest:o,question:h};if(!1===triggerEvent(n,"htmx:confirm",a))return maybeCall(l),s}let g=n,m=getClosestAttributeValue(n,"hx-sync"),x=null,y=!1;if(m){let e=m.split(":"),t=e[0].trim();if(g="this"===t?findThisElement(n,"hx-sync"):asElement(querySelectorExt(n,t)),m=(e[1]||"drop").trim(),d=getInternalData(g),"drop"===m&&d.xhr&&!0!==d.abortable)return maybeCall(l),s;if("abort"===m)if(d.xhr)return maybeCall(l),s;else y=!0;else"replace"===m?triggerEvent(g,"htmx:abort"):0===m.indexOf("queue")&&(x=(m.split(" ")[1]||"last").trim())}if(d.xhr)if(d.abortable)triggerEvent(g,"htmx:abort");else{if(null==x){if(r){let e=getInternalData(r);e&&e.triggerSpec&&e.triggerSpec.queue&&(x=e.triggerSpec.queue)}null==x&&(x="last")}return null==d.queuedRequests&&(d.queuedRequests=[]),"first"===x&&0===d.queuedRequests.length?d.queuedRequests.push(function(){issueAjaxRequest(e,t,n,r,i)}):"all"===x?d.queuedRequests.push(function(){issueAjaxRequest(e,t,n,r,i)}):"last"===x&&(d.queuedRequests=[],d.queuedRequests.push(function(){issueAjaxRequest(e,t,n,r,i)})),maybeCall(l),s}let _=new XMLHttpRequest;d.xhr=_,d.abortable=y;let v=function(){d.xhr=null,d.abortable=!1,null!=d.queuedRequests&&d.queuedRequests.length>0&&d.queuedRequests.shift()()},b=getClosestAttributeValue(n,"hx-prompt");if(b){var w=prompt(b);if(null===w||!triggerEvent(n,"htmx:prompt",{prompt:w,target:f}))return maybeCall(l),v(),s}if(h&&!o&&!confirm(h))return maybeCall(l),v(),s;let S=getHeaders(n,f,w);"get"===e||usesFormData(n)||(S["Content-Type"]="application/x-www-form-urlencoded"),i.headers&&(S=mergeObjects(S,i.headers));let E=getInputValues(n,e),O=E.errors,C=E.formData;i.values&&overrideFormData(C,formDataFromObject(i.values));let A=overrideFormData(C,formDataFromObject(getExpressionVars(n,r))),k=filterValues(A,n);htmx.config.getCacheBusterParam&&"get"===e&&k.set("org.htmx.cache-buster",getRawAttribute(f,"id")||"true"),(null==t||""===t)&&(t=location.href);let R=getValuesForElement(n,"hx-request"),T=getInternalData(n).boosted,N=htmx.config.methodsThatUseUrlParams.indexOf(e)>=0,L={boosted:T,useUrlParams:N,formData:k,parameters:formDataProxy(k),unfilteredFormData:A,unfilteredParameters:formDataProxy(A),headers:S,elt:n,target:f,verb:e,errors:O,withCredentials:i.credentials||R.credentials||htmx.config.withCredentials,timeout:i.timeout||R.timeout||htmx.config.timeout,path:t,triggeringEvent:r};if(!triggerEvent(n,"htmx:configRequest",L))return maybeCall(l),v(),s;if(t=L.path,e=L.verb,S=L.headers,k=formDataFromObject(L.parameters),O=L.errors,N=L.useUrlParams,O&&O.length>0)return triggerEvent(n,"htmx:validation:halted",L),maybeCall(l),v(),s;let q=t.split("#"),H=q[0],M=q[1],P=t;if(N&&(P=H,!k.keys().next().done&&(0>P.indexOf("?")?P+="?":P+="&",P+=urlEncode(k),M&&(P+="#"+M))),!verifyPath(n,P,L))return triggerErrorEvent(n,"htmx:invalidPath",L),maybeCall(a),v(),s;if(_.open(e.toUpperCase(),P,!0),_.overrideMimeType("text/html"),_.withCredentials=L.withCredentials,_.timeout=L.timeout,R.noHeaders);else for(let e in S)if(S.hasOwnProperty(e)){let t=S[e];safelySetHeaderValue(_,e,t)}let j={xhr:_,target:f,requestConfig:L,etc:i,boosted:T,select:c,pathInfo:{requestPath:t,finalRequestPath:P,responsePath:null,anchor:M}};if(_.onload=function(){try{let e=hierarchyForElt(n);if(j.pathInfo.responsePath=getPathFromResponse(_),u(n,j),!0!==j.keepIndicators&&removeRequestIndicators(I,$),triggerEvent(n,"htmx:afterRequest",j),triggerEvent(n,"htmx:afterOnLoad",j),!bodyContains(n)){let t=null;for(;e.length>0&&null==t;){let n=e.shift();bodyContains(n)&&(t=n)}t&&(triggerEvent(t,"htmx:afterRequest",j),triggerEvent(t,"htmx:afterOnLoad",j))}maybeCall(l)}catch(e){throw triggerErrorEvent(n,"htmx:onLoadError",mergeObjects({error:e},j)),e}finally{v()}},_.onerror=function(){removeRequestIndicators(I,$),triggerErrorEvent(n,"htmx:afterRequest",j),triggerErrorEvent(n,"htmx:sendError",j),maybeCall(a),v()},_.onabort=function(){removeRequestIndicators(I,$),triggerErrorEvent(n,"htmx:afterRequest",j),triggerErrorEvent(n,"htmx:sendAbort",j),maybeCall(a),v()},_.ontimeout=function(){removeRequestIndicators(I,$),triggerErrorEvent(n,"htmx:afterRequest",j),triggerErrorEvent(n,"htmx:timeout",j),maybeCall(a),v()},!triggerEvent(n,"htmx:beforeRequest",j))return maybeCall(l),v(),s;var I=addRequestIndicatorClasses(n),$=disableElements(n);forEach(["loadstart","loadend","progress","abort"],function(e){forEach([_,_.upload],function(t){t.addEventListener(e,function(t){triggerEvent(n,"htmx:xhr:"+e,{lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total})})})}),triggerEvent(n,"htmx:beforeSend",j);let D=N?null:encodeParamsForBody(_,n,k);return _.send(D),s}function determineHistoryUpdates(e,t){let n=t.xhr,r=null,i=null;if(hasHeader(n,/HX-Push:/i)?(r=n.getResponseHeader("HX-Push"),i="push"):hasHeader(n,/HX-Push-Url:/i)?(r=n.getResponseHeader("HX-Push-Url"),i="push"):hasHeader(n,/HX-Replace-Url:/i)&&(r=n.getResponseHeader("HX-Replace-Url"),i="replace"),r)if("false"===r)return{};else return{type:i,path:r};let o=t.pathInfo.finalRequestPath,l=t.pathInfo.responsePath,a=t.etc.push||getClosestAttributeValue(e,"hx-push-url"),s=t.etc.replace||getClosestAttributeValue(e,"hx-replace-url"),u=getInternalData(e).boosted,c=null,f=null;return(a?(c="push",f=a):s?(c="replace",f=s):u&&(c="push",f=l||o),f)?"false"===f?{}:("true"===f&&(f=l||o),t.pathInfo.anchor&&-1===f.indexOf("#")&&(f=f+"#"+t.pathInfo.anchor),{type:c,path:f}):{}}function codeMatches(e,t){return new RegExp(e.code).test(t.toString(10))}function resolveResponseHandling(e){for(var t=0;tn.indexOf(e)){let n=extensions[e];n&&0>t.indexOf(n)&&t.push(n)}}),getExtensions(asElement(parentElt(e)),t,n)}var isReady=!1;function ready(e){isReady||"complete"===getDocument().readyState?e():getDocument().addEventListener("DOMContentLoaded",e)}function insertIndicatorStyles(){if(!1!==htmx.config.includeIndicatorStyles){let e=htmx.config.inlineStyleNonce?` nonce="${htmx.config.inlineStyleNonce}"`:"",t=htmx.config.indicatorClass,n=htmx.config.requestClass;getDocument().head.insertAdjacentHTML("beforeend",`.${t}{opacity:0;visibility: hidden} .${n} .${t}, .${n}.${t}{opacity:1;visibility: visible;transition: opacity 200ms ease-in}`)}}function getMetaConfig(){let e=getDocument().querySelector('meta[name="htmx-config"]');return e?parseJSON(e.content):null}function mergeMetaConfig(){let e=getMetaConfig();e&&(htmx.config=mergeObjects(htmx.config,e))}return getDocument().addEventListener("DOMContentLoaded",function(){isReady=!0}),ready(function(){mergeMetaConfig(),insertIndicatorStyles();let e=getDocument().body;processNode(e);let t=getDocument().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");e.addEventListener("htmx:abort",function(e){let t=getInternalData(e.detail.elt||e.target);t&&t.xhr&&t.xhr.abort()});let n=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){e.state&&e.state.htmx?(restoreHistory(),forEach(t,function(e){triggerEvent(e,"htmx:restored",{document:getDocument(),triggerEvent:triggerEvent})})):n&&n(e)},getWindow().setTimeout(function(){triggerEvent(e,"htmx:load",{}),e=null},0)}),htmx}(),$439421104d3ae135$export$2e2bcd8739ae039=htmx}),parcelRequire("5NIBB");var $99b18dd98d1424fc$var$flushPending=!1,$99b18dd98d1424fc$var$flushing=!1,$99b18dd98d1424fc$var$queue=[],$99b18dd98d1424fc$var$lastFlushedIndex=-1,$99b18dd98d1424fc$var$transactionActive=!1;function $99b18dd98d1424fc$var$scheduler(e){$99b18dd98d1424fc$var$queueJob(e)}function $99b18dd98d1424fc$var$startTransaction(){$99b18dd98d1424fc$var$transactionActive=!0}function $99b18dd98d1424fc$var$commitTransaction(){$99b18dd98d1424fc$var$transactionActive=!1,$99b18dd98d1424fc$var$queueFlush()}function $99b18dd98d1424fc$var$queueJob(e){$99b18dd98d1424fc$var$queue.includes(e)||$99b18dd98d1424fc$var$queue.push(e),$99b18dd98d1424fc$var$queueFlush()}function $99b18dd98d1424fc$var$dequeueJob(e){let t=$99b18dd98d1424fc$var$queue.indexOf(e);-1!==t&&t>$99b18dd98d1424fc$var$lastFlushedIndex&&$99b18dd98d1424fc$var$queue.splice(t,1)}function $99b18dd98d1424fc$var$queueFlush(){$99b18dd98d1424fc$var$flushing||$99b18dd98d1424fc$var$flushPending||$99b18dd98d1424fc$var$transactionActive||($99b18dd98d1424fc$var$flushPending=!0,queueMicrotask($99b18dd98d1424fc$var$flushJobs))}function $99b18dd98d1424fc$var$flushJobs(){$99b18dd98d1424fc$var$flushPending=!1,$99b18dd98d1424fc$var$flushing=!0;for(let e=0;e<$99b18dd98d1424fc$var$queue.length;e++)$99b18dd98d1424fc$var$queue[e](),$99b18dd98d1424fc$var$lastFlushedIndex=e;$99b18dd98d1424fc$var$queue.length=0,$99b18dd98d1424fc$var$lastFlushedIndex=-1,$99b18dd98d1424fc$var$flushing=!1}var $99b18dd98d1424fc$var$shouldSchedule=!0;function $99b18dd98d1424fc$var$disableEffectScheduling(e){$99b18dd98d1424fc$var$shouldSchedule=!1,e(),$99b18dd98d1424fc$var$shouldSchedule=!0}function $99b18dd98d1424fc$var$setReactivityEngine(e){$99b18dd98d1424fc$var$reactive=e.reactive,$99b18dd98d1424fc$var$release=e.release,$99b18dd98d1424fc$var$effect=t=>e.effect(t,{scheduler:e=>{$99b18dd98d1424fc$var$shouldSchedule?$99b18dd98d1424fc$var$scheduler(e):e()}}),$99b18dd98d1424fc$var$raw=e.raw}function $99b18dd98d1424fc$var$overrideEffect(e){$99b18dd98d1424fc$var$effect=e}function $99b18dd98d1424fc$var$elementBoundEffect(e){let t=()=>{};return[n=>{let r=$99b18dd98d1424fc$var$effect(n);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(e=>e())}),e._x_effects.add(r),t=()=>{void 0!==r&&(e._x_effects.delete(r),$99b18dd98d1424fc$var$release(r))},r},()=>{t()}]}function $99b18dd98d1424fc$var$watch(e,t){let n,r,i=!0,o=$99b18dd98d1424fc$var$effect(()=>{let o=e(),l=JSON.stringify(o);if(!i&&("object"==typeof o||o!==n)){let e="object"==typeof n?JSON.parse(r):n;queueMicrotask(()=>{t(o,e)})}n=o,r=l,i=!1});return()=>$99b18dd98d1424fc$var$release(o)}async function $99b18dd98d1424fc$var$transaction(e){$99b18dd98d1424fc$var$startTransaction();try{await e(),await Promise.resolve()}finally{$99b18dd98d1424fc$var$commitTransaction()}}var $99b18dd98d1424fc$var$onAttributeAddeds=[],$99b18dd98d1424fc$var$onElRemoveds=[],$99b18dd98d1424fc$var$onElAddeds=[];function $99b18dd98d1424fc$var$onElAdded(e){$99b18dd98d1424fc$var$onElAddeds.push(e)}function $99b18dd98d1424fc$var$onElRemoved(e,t){"function"==typeof t?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,$99b18dd98d1424fc$var$onElRemoveds.push(t))}function $99b18dd98d1424fc$var$onAttributesAdded(e){$99b18dd98d1424fc$var$onAttributeAddeds.push(e)}function $99b18dd98d1424fc$var$onAttributeRemoved(e,t,n){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(n)}function $99b18dd98d1424fc$var$cleanupAttributes(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach(([n,r])=>{(void 0===t||t.includes(n))&&(r.forEach(e=>e()),delete e._x_attributeCleanups[n])})}function $99b18dd98d1424fc$var$cleanupElement(e){for(e._x_effects?.forEach($99b18dd98d1424fc$var$dequeueJob);e._x_cleanups?.length;)e._x_cleanups.pop()()}var $99b18dd98d1424fc$var$observer=new MutationObserver($99b18dd98d1424fc$var$onMutate),$99b18dd98d1424fc$var$currentlyObserving=!1;function $99b18dd98d1424fc$var$startObservingMutations(){$99b18dd98d1424fc$var$observer.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),$99b18dd98d1424fc$var$currentlyObserving=!0}function $99b18dd98d1424fc$var$stopObservingMutations(){$99b18dd98d1424fc$var$flushObserver(),$99b18dd98d1424fc$var$observer.disconnect(),$99b18dd98d1424fc$var$currentlyObserving=!1}var $99b18dd98d1424fc$var$queuedMutations=[];function $99b18dd98d1424fc$var$flushObserver(){let e=$99b18dd98d1424fc$var$observer.takeRecords();$99b18dd98d1424fc$var$queuedMutations.push(()=>e.length>0&&$99b18dd98d1424fc$var$onMutate(e));let t=$99b18dd98d1424fc$var$queuedMutations.length;queueMicrotask(()=>{if($99b18dd98d1424fc$var$queuedMutations.length===t)for(;$99b18dd98d1424fc$var$queuedMutations.length>0;)$99b18dd98d1424fc$var$queuedMutations.shift()()})}function $99b18dd98d1424fc$var$mutateDom(e){if(!$99b18dd98d1424fc$var$currentlyObserving)return e();$99b18dd98d1424fc$var$stopObservingMutations();let t=e();return $99b18dd98d1424fc$var$startObservingMutations(),t}var $99b18dd98d1424fc$var$isCollecting=!1,$99b18dd98d1424fc$var$deferredMutations=[];function $99b18dd98d1424fc$var$deferMutations(){$99b18dd98d1424fc$var$isCollecting=!0}function $99b18dd98d1424fc$var$flushAndStopDeferringMutations(){$99b18dd98d1424fc$var$isCollecting=!1,$99b18dd98d1424fc$var$onMutate($99b18dd98d1424fc$var$deferredMutations),$99b18dd98d1424fc$var$deferredMutations=[]}function $99b18dd98d1424fc$var$onMutate(e){if($99b18dd98d1424fc$var$isCollecting){$99b18dd98d1424fc$var$deferredMutations=$99b18dd98d1424fc$var$deferredMutations.concat(e);return}let t=[],n=new Set,r=new Map,i=new Map;for(let o=0;o{1!==e.nodeType||e._x_marker&&n.add(e)}),e[o].addedNodes.forEach(e=>{1!==e.nodeType||(n.has(e)?n.delete(e):e._x_marker||t.push(e))})),"attributes"===e[o].type)){let t=e[o].target,n=e[o].attributeName,l=e[o].oldValue,a=()=>{r.has(t)||r.set(t,[]),r.get(t).push({name:n,value:t.getAttribute(n)})},s=()=>{i.has(t)||i.set(t,[]),i.get(t).push(n)};t.hasAttribute(n)&&null===l?a():t.hasAttribute(n)?(s(),a()):s()}for(let e of(i.forEach((e,t)=>{$99b18dd98d1424fc$var$cleanupAttributes(t,e)}),r.forEach((e,t)=>{$99b18dd98d1424fc$var$onAttributeAddeds.forEach(n=>n(t,e))}),n))t.some(t=>t.contains(e))||$99b18dd98d1424fc$var$onElRemoveds.forEach(t=>t(e));for(let e of t)e.isConnected&&$99b18dd98d1424fc$var$onElAddeds.forEach(t=>t(e));t=null,n=null,r=null,i=null}function $99b18dd98d1424fc$var$scope(e){return $99b18dd98d1424fc$var$mergeProxies($99b18dd98d1424fc$var$closestDataStack(e))}function $99b18dd98d1424fc$var$addScopeToNode(e,t,n){return e._x_dataStack=[t,...$99b18dd98d1424fc$var$closestDataStack(n||e)],()=>{e._x_dataStack=e._x_dataStack.filter(e=>e!==t)}}function $99b18dd98d1424fc$var$closestDataStack(e){return e._x_dataStack?e._x_dataStack:"function"==typeof ShadowRoot&&e instanceof ShadowRoot?$99b18dd98d1424fc$var$closestDataStack(e.host):e.parentNode?$99b18dd98d1424fc$var$closestDataStack(e.parentNode):[]}function $99b18dd98d1424fc$var$mergeProxies(e){return new Proxy({objects:e},$99b18dd98d1424fc$var$mergeProxyTrap)}function $99b18dd98d1424fc$var$keyInPrototypeChain(e,t){return null===e||e===Object.prototype?null:Object.prototype.hasOwnProperty.call(e,t)?e:$99b18dd98d1424fc$var$keyInPrototypeChain(Object.getPrototypeOf(e),t)}var $99b18dd98d1424fc$var$mergeProxyTrap={ownKeys:({objects:e})=>Array.from(new Set(e.flatMap(e=>Object.keys(e)))),has:({objects:e},t)=>t!=Symbol.unscopables&&e.some(e=>Object.prototype.hasOwnProperty.call(e,t)||Reflect.has(e,t)),get:({objects:e},t,n)=>"toJSON"==t?$99b18dd98d1424fc$var$collapseProxies:Reflect.get(e.find(e=>Reflect.has(e,t))||{},t,n),set({objects:e},t,n,r){let i;for(let n of e)if(i=$99b18dd98d1424fc$var$keyInPrototypeChain(n,t))break;i||(i=e[e.length-1]);let o=Object.getOwnPropertyDescriptor(i,t);return o?.set&&o?.get?o.set.call(r,n)||!0:Reflect.set(i,t,n)}};function $99b18dd98d1424fc$var$collapseProxies(){return Reflect.ownKeys(this).reduce((e,t)=>(e[t]=Reflect.get(this,t),e),{})}function $99b18dd98d1424fc$var$initInterceptors(e){let t=e=>"object"==typeof e&&!Array.isArray(e)&&null!==e,n=(r,i="")=>{Object.entries(Object.getOwnPropertyDescriptors(r)).forEach(([o,{value:l,enumerable:a}])=>{if(!1===a||void 0===l||"object"==typeof l&&null!==l&&l.__v_skip)return;let s=""===i?o:`${i}.${o}`;"object"==typeof l&&null!==l&&l._x_interceptor?r[o]=l.initialize(e,s,o):!t(l)||l===r||l instanceof Element||n(l,s)})};return n(e)}function $99b18dd98d1424fc$var$interceptor(e,t=()=>{}){let n={initialValue:void 0,_x_interceptor:!0,initialize(t,n,r){return e(this.initialValue,()=>$99b18dd98d1424fc$var$get(t,n),e=>$99b18dd98d1424fc$var$set(t,n,e),n,r)}};return t(n),e=>{if("object"==typeof e&&null!==e&&e._x_interceptor){let t=n.initialize.bind(n);n.initialize=(r,i,o)=>(n.initialValue=e.initialize(r,i,o),t(r,i,o))}else n.initialValue=e;return n}}function $99b18dd98d1424fc$var$get(e,t){return t.split(".").reduce((e,t)=>e[t],e)}function $99b18dd98d1424fc$var$set(e,t,n){if("string"==typeof t&&(t=t.split(".")),1===t.length)e[t[0]]=n;else if(0!==t.length)return e[t[0]]||(e[t[0]]={}),$99b18dd98d1424fc$var$set(e[t[0]],t.slice(1),n);else throw error}var $99b18dd98d1424fc$var$magics={};function $99b18dd98d1424fc$var$magic(e,t){$99b18dd98d1424fc$var$magics[e]=t}function $99b18dd98d1424fc$var$injectMagics(e,t){let n=$99b18dd98d1424fc$var$getUtilities(t);return Object.entries($99b18dd98d1424fc$var$magics).forEach(([r,i])=>{Object.defineProperty(e,`$${r}`,{get:()=>i(t,n),enumerable:!1})}),e}function $99b18dd98d1424fc$var$getUtilities(e){let[t,n]=$99b18dd98d1424fc$var$getElementBoundUtilities(e),r={interceptor:$99b18dd98d1424fc$var$interceptor,...t};return $99b18dd98d1424fc$var$onElRemoved(e,n),r}function $99b18dd98d1424fc$var$tryCatch(e,t,n,...r){try{return n(...r)}catch(n){$99b18dd98d1424fc$var$handleError(n,e,t)}}function $99b18dd98d1424fc$var$handleError(...e){return $99b18dd98d1424fc$var$errorHandler(...e)}var $99b18dd98d1424fc$var$errorHandler=$99b18dd98d1424fc$var$normalErrorHandler;function $99b18dd98d1424fc$var$setErrorHandler(e){$99b18dd98d1424fc$var$errorHandler=e}function $99b18dd98d1424fc$var$normalErrorHandler(e,t,n){e=Object.assign(e??{message:"No error message given."},{el:t,expression:n}),console.warn(`Alpine Expression Error: ${e.message} + +${n?'Expression: "'+n+'"\n\n':""}`,t),setTimeout(()=>{throw e},0)}var $99b18dd98d1424fc$var$shouldAutoEvaluateFunctions=!0;function $99b18dd98d1424fc$var$dontAutoEvaluateFunctions(e){let t=$99b18dd98d1424fc$var$shouldAutoEvaluateFunctions;$99b18dd98d1424fc$var$shouldAutoEvaluateFunctions=!1;let n=e();return $99b18dd98d1424fc$var$shouldAutoEvaluateFunctions=t,n}function $99b18dd98d1424fc$var$evaluate(e,t,n={}){let r;return $99b18dd98d1424fc$var$evaluateLater(e,t)(e=>r=e,n),r}function $99b18dd98d1424fc$var$evaluateLater(...e){return $99b18dd98d1424fc$var$theEvaluatorFunction(...e)}var $99b18dd98d1424fc$var$theEvaluatorFunction=()=>{};function $99b18dd98d1424fc$var$setEvaluator(e){$99b18dd98d1424fc$var$theEvaluatorFunction=e}function $99b18dd98d1424fc$var$setRawEvaluator(e){$99b18dd98d1424fc$var$theRawEvaluatorFunction=e}function $99b18dd98d1424fc$var$normalEvaluator(e,t){let n={};$99b18dd98d1424fc$var$injectMagics(n,e);let r=[n,...$99b18dd98d1424fc$var$closestDataStack(e)],i="function"==typeof t?$99b18dd98d1424fc$var$generateEvaluatorFromFunction(r,t):$99b18dd98d1424fc$var$generateEvaluatorFromString(r,t,e);return $99b18dd98d1424fc$var$tryCatch.bind(null,e,t,i)}function $99b18dd98d1424fc$var$generateEvaluatorFromFunction(e,t){return(n=()=>{},{scope:r={},params:i=[],context:o}={})=>{$99b18dd98d1424fc$var$shouldAutoEvaluateFunctions?$99b18dd98d1424fc$var$runIfTypeOfFunction(n,t.apply($99b18dd98d1424fc$var$mergeProxies([r,...e]),i)):$99b18dd98d1424fc$var$runIfTypeOfFunction(n,t,$99b18dd98d1424fc$var$mergeProxies([r,...e]),i)}}var $99b18dd98d1424fc$var$evaluatorMemo={};function $99b18dd98d1424fc$var$generateFunctionFromString(e,t){if($99b18dd98d1424fc$var$evaluatorMemo[e])return $99b18dd98d1424fc$var$evaluatorMemo[e];let n=Object.getPrototypeOf(async function(){}).constructor,r=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(async()=>{ ${e} })()`:e,i=(()=>{try{let t=new n(["__self","scope"],`with (scope) { __self.result = ${r} }; __self.finished = true; return __self.result;`);return Object.defineProperty(t,"name",{value:`[Alpine] ${e}`}),t}catch(n){return $99b18dd98d1424fc$var$handleError(n,t,e),Promise.resolve()}})();return $99b18dd98d1424fc$var$evaluatorMemo[e]=i,i}function $99b18dd98d1424fc$var$generateEvaluatorFromString(e,t,n){let r=$99b18dd98d1424fc$var$generateFunctionFromString(t,n);return(i=()=>{},{scope:o={},params:l=[],context:a}={})=>{r.result=void 0,r.finished=!1;let s=$99b18dd98d1424fc$var$mergeProxies([o,...e]);if("function"==typeof r){let e=r.call(a,r,s).catch(e=>$99b18dd98d1424fc$var$handleError(e,n,t));r.finished?($99b18dd98d1424fc$var$runIfTypeOfFunction(i,r.result,s,l,n),r.result=void 0):e.then(e=>{$99b18dd98d1424fc$var$runIfTypeOfFunction(i,e,s,l,n)}).catch(e=>$99b18dd98d1424fc$var$handleError(e,n,t)).finally(()=>r.result=void 0)}}}function $99b18dd98d1424fc$var$runIfTypeOfFunction(e,t,n,r,i){if($99b18dd98d1424fc$var$shouldAutoEvaluateFunctions&&"function"==typeof t){let o=t.apply(n,r);o instanceof Promise?o.then(t=>$99b18dd98d1424fc$var$runIfTypeOfFunction(e,t,n,r)).catch(e=>$99b18dd98d1424fc$var$handleError(e,i,t)):e(o)}else"object"==typeof t&&t instanceof Promise?t.then(t=>e(t)):e(t)}function $99b18dd98d1424fc$var$evaluateRaw(...e){return $99b18dd98d1424fc$var$theRawEvaluatorFunction(...e)}function $99b18dd98d1424fc$var$normalRawEvaluator(e,t,n={}){let r={};$99b18dd98d1424fc$var$injectMagics(r,e);let i=[r,...$99b18dd98d1424fc$var$closestDataStack(e)],o=$99b18dd98d1424fc$var$mergeProxies([n.scope??{},...i]),l=n.params??[];if(t.includes("await")){let e=Object.getPrototypeOf(async function(){}).constructor,r=/^[\n\s]*if.*\(.*\)/.test(t.trim())||/^(let|const)\s/.test(t.trim())?`(async()=>{ ${t} })()`:t;return new e(["scope"],`with (scope) { let __result = ${r}; return __result }`).call(n.context,o)}{let e=/^[\n\s]*if.*\(.*\)/.test(t.trim())||/^(let|const)\s/.test(t.trim())?`(()=>{ ${t} })()`:t,r=Function(["scope"],`with (scope) { let __result = ${e}; return __result }`).call(n.context,o);return"function"==typeof r&&$99b18dd98d1424fc$var$shouldAutoEvaluateFunctions?r.apply(o,l):r}}var $99b18dd98d1424fc$var$prefixAsString="x-";function $99b18dd98d1424fc$var$prefix(e=""){return $99b18dd98d1424fc$var$prefixAsString+e}function $99b18dd98d1424fc$var$setPrefix(e){$99b18dd98d1424fc$var$prefixAsString=e}var $99b18dd98d1424fc$var$directiveHandlers={};function $99b18dd98d1424fc$var$directive(e,t){return $99b18dd98d1424fc$var$directiveHandlers[e]=t,{before(t){if(!$99b18dd98d1424fc$var$directiveHandlers[t])return void console.warn(String.raw`Cannot find directive \`${t}\`. \`${e}\` will use the default order of execution`);let n=$99b18dd98d1424fc$var$directiveOrder.indexOf(t);$99b18dd98d1424fc$var$directiveOrder.splice(n>=0?n:$99b18dd98d1424fc$var$directiveOrder.indexOf("DEFAULT"),0,e)}}}function $99b18dd98d1424fc$var$directiveExists(e){return Object.keys($99b18dd98d1424fc$var$directiveHandlers).includes(e)}function $99b18dd98d1424fc$var$directives(e,t,n){if(t=Array.from(t),e._x_virtualDirectives){let n=Object.entries(e._x_virtualDirectives).map(([e,t])=>({name:e,value:t})),r=$99b18dd98d1424fc$var$attributesOnly(n);n=n.map(e=>r.find(t=>t.name===e.name)?{name:`x-bind:${e.name}`,value:`"${e.value}"`}:e),t=t.concat(n)}let r={};return t.map($99b18dd98d1424fc$var$toTransformedAttributes((e,t)=>r[e]=t)).filter($99b18dd98d1424fc$var$outNonAlpineAttributes).map($99b18dd98d1424fc$var$toParsedDirectives(r,n)).sort($99b18dd98d1424fc$var$byPriority).map(t=>$99b18dd98d1424fc$var$getDirectiveHandler(e,t))}function $99b18dd98d1424fc$var$attributesOnly(e){return Array.from(e).map($99b18dd98d1424fc$var$toTransformedAttributes()).filter(e=>!$99b18dd98d1424fc$var$outNonAlpineAttributes(e))}var $99b18dd98d1424fc$var$isDeferringHandlers=!1,$99b18dd98d1424fc$var$directiveHandlerStacks=new Map,$99b18dd98d1424fc$var$currentHandlerStackKey=Symbol();function $99b18dd98d1424fc$var$deferHandlingDirectives(e){$99b18dd98d1424fc$var$isDeferringHandlers=!0;let t=Symbol();$99b18dd98d1424fc$var$currentHandlerStackKey=t,$99b18dd98d1424fc$var$directiveHandlerStacks.set(t,[]);let n=()=>{for(;$99b18dd98d1424fc$var$directiveHandlerStacks.get(t).length;)$99b18dd98d1424fc$var$directiveHandlerStacks.get(t).shift()();$99b18dd98d1424fc$var$directiveHandlerStacks.delete(t)},r=()=>{$99b18dd98d1424fc$var$isDeferringHandlers=!1,n()};e(n),r()}function $99b18dd98d1424fc$var$getElementBoundUtilities(e){let t=[],n=e=>t.push(e),[r,i]=$99b18dd98d1424fc$var$elementBoundEffect(e);return t.push(i),[{Alpine:$99b18dd98d1424fc$var$alpine_default,effect:r,cleanup:n,evaluateLater:$99b18dd98d1424fc$var$evaluateLater.bind($99b18dd98d1424fc$var$evaluateLater,e),evaluate:$99b18dd98d1424fc$var$evaluate.bind($99b18dd98d1424fc$var$evaluate,e)},()=>t.forEach(e=>e())]}function $99b18dd98d1424fc$var$getDirectiveHandler(e,t){let n=()=>{},r=$99b18dd98d1424fc$var$directiveHandlers[t.type]||n,[i,o]=$99b18dd98d1424fc$var$getElementBoundUtilities(e);$99b18dd98d1424fc$var$onAttributeRemoved(e,t.original,o);let l=()=>{e._x_ignore||e._x_ignoreSelf||(r.inline&&r.inline(e,t,i),r=r.bind(r,e,t,i),$99b18dd98d1424fc$var$isDeferringHandlers?$99b18dd98d1424fc$var$directiveHandlerStacks.get($99b18dd98d1424fc$var$currentHandlerStackKey).push(r):r())};return l.runCleanups=o,l}var $99b18dd98d1424fc$var$startingWith=(e,t)=>({name:n,value:r})=>(n.startsWith(e)&&(n=n.replace(e,t)),{name:n,value:r}),$99b18dd98d1424fc$var$into=e=>e;function $99b18dd98d1424fc$var$toTransformedAttributes(e=()=>{}){return({name:t,value:n})=>{let{name:r,value:i}=$99b18dd98d1424fc$var$attributeTransformers.reduce((e,t)=>t(e),{name:t,value:n});return r!==t&&e(r,t),{name:r,value:i}}}var $99b18dd98d1424fc$var$attributeTransformers=[];function $99b18dd98d1424fc$var$mapAttributes(e){$99b18dd98d1424fc$var$attributeTransformers.push(e)}function $99b18dd98d1424fc$var$outNonAlpineAttributes({name:e}){return $99b18dd98d1424fc$var$alpineAttributeRegex().test(e)}var $99b18dd98d1424fc$var$alpineAttributeRegex=()=>RegExp(`^${$99b18dd98d1424fc$var$prefixAsString}([^:^.]+)\\b`);function $99b18dd98d1424fc$var$toParsedDirectives(e,t){return({name:n,value:r})=>{n===r&&(r="");let i=n.match($99b18dd98d1424fc$var$alpineAttributeRegex()),o=n.match(/:([a-zA-Z0-9\-_:]+)/),l=n.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],a=t||e[n]||n;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:l.map(e=>e.replace(".","")),expression:r,original:a}}}var $99b18dd98d1424fc$var$DEFAULT="DEFAULT",$99b18dd98d1424fc$var$directiveOrder=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",$99b18dd98d1424fc$var$DEFAULT,"teleport"];function $99b18dd98d1424fc$var$byPriority(e,t){let n=-1===$99b18dd98d1424fc$var$directiveOrder.indexOf(e.type)?$99b18dd98d1424fc$var$DEFAULT:e.type,r=-1===$99b18dd98d1424fc$var$directiveOrder.indexOf(t.type)?$99b18dd98d1424fc$var$DEFAULT:t.type;return $99b18dd98d1424fc$var$directiveOrder.indexOf(n)-$99b18dd98d1424fc$var$directiveOrder.indexOf(r)}function $99b18dd98d1424fc$var$dispatch(e,t,n={},r={}){return e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0,...r}))}function $99b18dd98d1424fc$var$walk(e,t){if("function"==typeof ShadowRoot&&e instanceof ShadowRoot)return void Array.from(e.children).forEach(e=>$99b18dd98d1424fc$var$walk(e,t));let n=!1;if(t(e,()=>n=!0),n)return;let r=e.firstElementChild;for(;r;)$99b18dd98d1424fc$var$walk(r,t),r=r.nextElementSibling}function $99b18dd98d1424fc$var$warn(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var $99b18dd98d1424fc$var$started=!1;function $99b18dd98d1424fc$var$start(){$99b18dd98d1424fc$var$started&&$99b18dd98d1424fc$var$warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),$99b18dd98d1424fc$var$started=!0,document.body||$99b18dd98d1424fc$var$warn("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` + + +} diff --git a/templates/main_templ.go b/templates/main_templ.go new file mode 100644 index 0000000..04edaa9 --- /dev/null +++ b/templates/main_templ.go @@ -0,0 +1,88 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.1001 +package templates + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +import "github.com/bergbauer888/backgroundoo/templates/pages" + +func Layout(title string, metaTags, bodyContent templ.Component) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var2 string + templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/main.templ`, Line: 14, Col: 17} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = metaTags.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.RenderScriptItems(ctx, templ_7745c5c3_Buffer, pages.BodyScripts()) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = bodyContent.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/templates/pages/index.templ b/templates/pages/index.templ new file mode 100644 index 0000000..346db5c --- /dev/null +++ b/templates/pages/index.templ @@ -0,0 +1,57 @@ +package pages + +// MetaTags defines meta tags. + +templ MetaTags(keywords, description string) { + + +} + +// styledTextStyles defines CSS styles for component. + +css styledTextStyles() { + color: #02BF87; +} + +// BodyContent defines HTML content. + +templ BodyContent(h1, text string) { +
+
+ + + +

Go + Templ + htmx

+

+ You're using Templ package to generate HTML content! +
+ Edit this styled text in the ./templates/pages/index.templ file. +

+
+ +
+
+

+ A next-generation CLI tool that makes it easy to create amazing web applications +
+ with Go on the backend, using htmx, + hyperscript or Alpine.js, +
+ and the most popular CSS frameworks on the frontend. +

+

+ Documentation ⋅ + GitHub +

+
+
+} + +// BodyScripts defines JavaScript code. + +script BodyScripts() { + console.log( + "You're using Templ package to generate HTML content!", + "Edit this JavaScript code in the `./templates/pages/index.templ` file.", + ); +} diff --git a/templates/pages/index_templ.go b/templates/pages/index_templ.go new file mode 100644 index 0000000..438d161 --- /dev/null +++ b/templates/pages/index_templ.go @@ -0,0 +1,144 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.1001 +package pages + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +// MetaTags defines meta tags. +func MetaTags(keywords, description string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +// styledTextStyles defines CSS styles for component. +func styledTextStyles() templ.CSSClass { + templ_7745c5c3_CSSBuilder := templruntime.GetBuilder() + templ_7745c5c3_CSSBuilder.WriteString(`color:#02BF87;`) + templ_7745c5c3_CSSID := templ.CSSID(`styledTextStyles`, templ_7745c5c3_CSSBuilder.String()) + return templ.ComponentCSSClass{ + ID: templ_7745c5c3_CSSID, + Class: templ.SafeCSS(`.` + templ_7745c5c3_CSSID + `{` + templ_7745c5c3_CSSBuilder.String() + `}`), + } +} + +// BodyContent defines HTML content. +func BodyContent(h1, text string) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var4 := templ.GetChildren(ctx) + if templ_7745c5c3_Var4 == nil { + templ_7745c5c3_Var4 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "
\"Gowebly

Go + Templ + htmx

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 = []any{styledTextStyles()} + templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var5...) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "

You're using Templ package to generate HTML content!
Edit this styled text in the ./templates/pages/index.templ file.

A next-generation CLI tool that makes it easy to create amazing web applications
with Go on the backend, using htmx, hyperscript or Alpine.js,
and the most popular CSS frameworks on the frontend.

DocumentationGitHub

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +// BodyScripts defines JavaScript code. +func BodyScripts() templ.ComponentScript { + return templ.ComponentScript{ + Name: `__templ_BodyScripts_3e71`, + Function: `function __templ_BodyScripts_3e71(){console.log( + "You're using Templ package to generate HTML content!", + "Edit this JavaScript code in the ` + "`" + `./templates/pages/index.templ` + "`" + ` file.", + ); +}`, + Call: templ.SafeScript(`__templ_BodyScripts_3e71`), + CallInline: templ.SafeScriptInline(`__templ_BodyScripts_3e71`), + } +} + +var _ = templruntime.GeneratedTemplate